diff --git a/bin/calculRatios.php b/bin/calculRatios.php new file mode 100644 index 00000000..66444f88 --- /dev/null +++ b/bin/calculRatios.php @@ -0,0 +1,316 @@ +#!/usr/bin/php +select( 'ratios_formules', + 'max(dateUpdate) AS lastUpdate, max(dateInsert) AS lastInsert', + '1'); + $lastUpdate=$tabLast[0]['lastInsert']; + if ($tabLast[0]['lastUpdate']>$lastUpdate) $lastUpdate=$tabLast[0]['lastUpdate']; + + /** On vérifie la présence du cache de calcul des ratios **/ + if (!file_exists(INCLUDE_PATH.'tmp/configMRatios.php')) + die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'existe pas !".EOL); + /** On vérifie qu'il n'y a pas de nouvelles formules à mettre dans le cache de calcul des ratios **/ + elseif (strtr($lastUpdate, array(':'=>'','-'=>'', ' '=>''))>date('YmdHis',filectime(INCLUDE_PATH.'tmp/configMRatios.php'))) { + sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "ERREUR FATALE, le cache ratio n'est pas à jour !", date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas à jour (nouvelles formules ?). Relancer à l'option -c !"); + die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas à jour (nouvelles formules ?). Relancer à l'option -c !".EOL); + } + /** On vérifie que le programme de MAJ du cache n'a pas été modifié **/ + elseif (date('YmdHis',filectime(INCLUDE_PATH.'scores/classMRatios.php'))>date('YmdHis',filectime(INCLUDE_PATH.'tmp/configMRatios.php'))) // Le fichier de cache est déprécié + die(date('Y/m/d - H:i:s') ." - ERREUR FATALE : Le cache des calculs de ratio n'est pas à jour (programme modifié). Relancer à l'option -c !".EOL); + + include_once(INCLUDE_PATH.'tmp/configMRatios.php'); + + echo date('Y/m/d - H:i:s') ." - Formules de calcul des ratios déjà en cache.".EOL; + + /** Recherche de la dernière mise à jour des ratios secteurs **/ + $tabLast=$iDb->select( 'ratios_secteurs', + 'max(dateUpdate) AS lastUpdate, max(dateInsert) AS lastInsert', + '1'); + $lastUpdate=$tabLast[0]['lastInsert']; + if ($tabLast[0]['lastUpdate']>$lastUpdate) $lastUpdate=$tabLast[0]['lastUpdate']; + if ($dateDeb>20000101123000) $lastUpdate=$dateDeb; + $lastDateUpdate=strtr($lastUpdate,array(' '=>'',':'=>'','-'=>'')); + + echo(date('Y/m/d - H:i:s') ." - La dernière mise à jour des ratios secteurs date du $lastUpdate...".EOL); + + $nbRows=$iDb->select( 'ratios_tmp', 'siren, lastUpdate', "1", false, MYSQL_ASSOC, true); + if ($nbRows>0) { + $modeSuite=true; + echo date('Y/m/d - H:i:s') ." - Il reste $nbRows entreprises pour lesquels il faut mettre à jour les ratios secteurs...".EOL; + } else { + /** On met en table temporaire les siren en cas de plantage du script **/ + $modeSuite=false; + + if ($millesime) { + // Liste des derniers Bilans insérés depuis le dernier calcul des ratios + $nbRows=$iDb->select( 'bilans', 'DISTINCT siren', "siren>100 AND dateExercice BETWEEN $milles"."0101 AND $millesime"."1231 AND typeBilan IN ('N','S','',' ','A','B') ORDER BY dateInsert DESC", false, MYSQL_ASSOC, true); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises avec des bilans millésimes $millesime pour calcul des ratios secteurs...".EOL; + //die(); + } else { + // Date du dernier bilan inseré + $tabLast=$iDb->select( 'bilans', + 'MAX(dateInsert) AS lastDateInsert', + "siren>100 AND dateInsert>='$lastUpdate' AND typeBilan IN ('N','S','',' ','A','B') ORDER BY dateInsert DESC"); + $lastDateBilan=strtr($tabLast[0]['lastDateInsert'],array(' '=>'',':'=>'','-'=>'')); + echo(date('Y/m/d - H:i:s') ." - Le dernier bilan inséré en base date du $lastDateBilan...".EOL); + // Liste des derniers Bilans insérés depuis le dernier calcul des ratios + $nbRows=$iDb->select( 'bilans', 'DISTINCT siren', "siren>100 AND dateInsert>='$lastUpdate' AND typeBilan IN ('N','',' ','A','B') ORDER BY dateInsert DESC", false, MYSQL_ASSOC, true); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises avec nouveaux bilans pour calcul des ratios secteurs...".EOL; + } + $iDb2->query('DROP TABLE IF EXISTS ratios_tmp;'); + if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la création de la table temporaires, n°'.mysql_errno().' : '.mysql_error().EOL; + $strSQL="CREATE TABLE IF NOT EXISTS ratios_tmp ( + siren int(9) unsigned zerofill NOT NULL, + lastUpdate bigint(14) unsigned zerofill NOT NULL COMMENT 'Date de dernière mise à jour de la table ratio', + lastBilan bigint(14) unsigned zerofill NOT NULL COMMENT 'Dernier bilan enregistré dans la table bilan', + millesime year(4) unsigned NULL DEFAULT NULL COMMENT 'Paramètre millesime si défini', + PRIMARY KEY(siren) + ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='TEMP - Liste des bilans dont il faut calculer les ratios';"; + $iDb2->query($strSQL); + if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la création de la table temporaires, n°'.mysql_errno().' : '.mysql_error().EOL; + while($entrep=$iDb->fetch(MYSQL_ASSOC)) { + if (!$millesime) $millesimeDb='NULL'; else $millesimeDb=$millesime; + $iDb2->insert('ratios_tmp', array( 'siren' =>$entrep['siren'], + 'lastUpdate'=>$lastDateUpdate, // Date de dernière mise à jour de la table ratio + 'lastBilan' =>$lastDateBilan, // Dernier bilan enregistré dans la table bilan + 'millesime' =>$millesimeDb)); // On enregistre le paramètre millesime + } + echo date('Y/m/d - H:i:s') ." - Les éléments ont été mis en table temporaire en cas de reprise sur erreur !".EOL; + $nbRows=$iDb->select( 'ratios_tmp', 'siren, lastUpdate, lastBilan, millesime', "1", false, MYSQL_ASSOC, true); + } + + $k=0; // Compteur d'entreprises + $b=0; // Compteur total de bilans + while($entrep=$iDb->fetch(MYSQL_ASSOC)) { + if ($modeSuite && $k==0) $lastDateUpdate=$entrep['lastUpdate']; + $millesime=$entrep['millesime']; + + $k++; + if ($k<$iDeb) continue; + + $siren=$entrep['siren']; + if ($siren<100) continue; + // else echo "$siren\n"; + $naf4=$naf5=''; + unset($mBil); + + $mBil=new MBilans($siren); + + /** Récupération des informations Identitaires **/ + $tabIdentite=@$iInsee->getIdentiteLight($siren); + $naf=$tabIdentite['NafEnt']; + $nafLib=$tabIdentite['NafEntLib']; + $efftr=$tabIdentite['Effectif']; + $fj=$tabIdentite['FJ']; + + /** On Recherche le dernier Bilan mis à jour **/ + $tabBilans=$mBil->listeBilans(); + $nbBilansTot=count($tabBilans); + $tabBilans2=array(); + foreach ($tabBilans as $mil=>$infosBilan) { + /** On vérifie s'il n'y a pas de Bilan vide **/ + if ($infosBilan['dureeExercice']==0) { + if ($modeVerbose) { + print_r($infosBilan); + echo date('Y/m/d - H:i:s') ." - Erreur : Bilans vide en base pour le siren $siren !".EOL; + } + $iDb2->delete('ratios_tmp', "siren=$siren"); + continue(2); + } + /** On ne garde que les Bilans dont la date de provenance est > à la date de dernière Mise à jour + ** car les ratios secteurs des autres bilans on déjà été calculés ! **/ + if ($millesime && $infosBilan['millesime']==$millesime) + //echo "APRES ### $siren : $nbBilansTot bilans, $millesime = ".$infosBilan['millesime'].EOL; + $tabBilans2[$mil]=$infosBilan; + elseif (!$millesime && $infosBilan['dateInsert']>=$lastDateUpdate) + $tabBilans2[$mil]=$infosBilan; + /*else + echo "DALLE ### $siren : $nbBilansTot bilans, $millesime = ".$infosBilan['millesime']." ### QUE DALLE !!!!".EOL;*/ + } + + $nbBilans=count($tabBilans2); + $tabBilan=$tabBil=array(); + if ($nbBilans==0) { + if ($modeVerbose) { + print_r($tabBilans2); + echo date('Y/m/d - H:i:s') ." - Erreur : Aucun nouveau bilan en base pour le siren $siren sur les $nbBilansTot bilans !".EOL; + print_r($tabBilans); + } + $iDb2->delete('ratios_tmp', "siren=$siren"); + continue; + } + + $tabRatios=@calculRatios($tabBilans2, $tabIdentite, false, 999); + if (strlen($naf)>4) $naf5=$naf; else $naf4=$naf; + + if ($tabBilan[0]['CONSOLIDE']=='A') $naf4='ASSU'; + elseif ($tabBilan[0]['CONSOLIDE']=='B') $naf4='BANQ'; + + if ($modeVerbose && ($naf4=='ASSU' || $naf4=='BANQ')) { + //sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Calcul des ratios : Attention bilan de e", "Siren $siren, bilan $naf4".EOL.print_r($tabBilans)); + echo "Bilan '$naf4' pour le siren $siren et l'année $annee !".EOL; + } + + foreach ($tabFormules as $f=>$formule) { + foreach ($tabRatios as $i=>$R) { + $id=$formule['id']; + // Si on demande seulement le calcul d'un ratio alors on vérifie le numéro du ratio + if ($ratio && !in_array($id, $tabRatiosToCalc)) continue; + + if ($f==0) $b++; + // Si on n'est pas une banque/assurance, on ne calcul pas les ratios 700 à 799 + if ($naf4<>'ASSU' && $naf4<>'BANQ' && $id>=700 && $id<800) + continue; + + $annee=substr($tabBilan[$i]['DATE_CLOTURE'],0,4); + // Si on demande seulement le calcul d'un millésime alors on vérifie la date du bilan + if ($millesime && $annee<>$millesime) continue; + + if ($R[$id]==='NS' || $R[$id]===false ) { + if ($modeVebose) echo "Le ratio n°$id est non significatif (".$R[$id].") pour le siren $siren et l'année $annee !".EOL; + continue; + } + + /** Si c'est un ratio EUR, on le passe en K€ **/ + if ($formule['unite']=='EUR') $mt=$R[$id]/1000; + else $mt=$R[$id]; + + /** On vérifie les bornes MIN et MAX **/ + if ($formule['min']<>'' && $mt<$formule['min']) { + if ($modeVerbose) echo "Ratio n°$id, borne Mini non nulle (".$formule['min'].") et le montant est inférieur : $mt<".$formule['min']." pour le siren $siren et l'année $annee".EOL; + continue; + } elseif ($formule['max']<>'' && $mt>$formule['max']) { + if ($modeVerbose) echo "Ratio n°$id, borne Maxi non nulle (".$formule['max'].") et le montant est supérieur : $mt>".$formule['max']." pour le siren $siren et l'année $annee".EOL; + continue; + } //else + //echo "Ratio n°$id compris entre bornes ".$formule['min']." < $mt < ".$formule['max']." pour le siren $siren et l'année $annee".EOL; + + /** Lecture des chiffres existants dans la table ratios_secteurs **/ + $tabTmp=$iDb2->select( 'ratios_secteurs', + 'montant, nombre, id, naf4, naf5, annee', + "id=$id AND naf4='$naf4' AND naf5='$naf5' AND annee=$annee", + false, MYSQL_ASSOC); + if (count($tabTmp)>0) { + $mt2=$mt+$tabTmp[0]['montant']; + $nb2=$tabTmp[0]['nombre'] + 1; + } else { + $mt2=$mt; + $nb2=1; + } + + $tabUpdate=array( 'montant' => $mt2, + 'nombre' => $nb2, + ); + if (!$iDb2->update('ratios_secteurs', $tabUpdate, "id=$id AND naf4='$naf4' AND naf5='$naf5' AND annee=$annee") || $iDb2->getAffectedRows()==0 ) { // getAffectedRows ajouté le 14 mai 2009 + $tabInsert=array_merge($tabUpdate, array( 'id'=>$id, + 'naf4'=>$naf4, + 'naf5'=>$naf5, + 'annee'=>$annee, + 'dateInsert'=>$lastDateBilan, + )); + if (!$iDb2->insert('ratios_secteurs', $tabInsert) && mysql_errno()<>1062) { + $pct=round(($k/$nbRows)*100,2); + echo date('Y/m/d - H:i:s') ." - $k entreprises ($pct %) dont les ratios ont été calculés pour un total de $b bilans ($siren)...".EOL; + echo date('Y/m/d - H:i:s') .' - ERREUR SQL n°'.mysql_errno().' : '.mysql_error().EOL; + die(); + } + } + + if ($k%1000==0 && $f==0 && $i==0) { + $pct=round(($k/$nbRows)*100,2); + echo date('Y/m/d - H:i:s') ." - $k entreprises ($pct %) dont les ratios ont été calculés pour un total de $b bilans ($siren)...".EOL; + } + } + } + $iDb2->delete('ratios_tmp', "siren=$siren"); + if (mysql_errno()>0) echo date('Y/m/d - H:i:s') .' - ERREUR SQL lors de la suppression des informations temporaires, n°'.mysql_errno().' : '.mysql_error().EOL; + } +echo date('Y/m/d - H:i:s') ." - Les ratios ont été mis à jour ; suppression des informations temporaires.".EOL; + +$iDb2->query('DROP TABLE IF EXISTS jo.ratios_tmp;'); + +die(date('Y/m/d - H:i:s') ." - Fin du programme.".EOL); + + ?> \ No newline at end of file diff --git a/bin/calculRedevances.php b/bin/calculRedevances.php new file mode 100644 index 00000000..5e2a81b5 --- /dev/null +++ b/bin/calculRedevances.php @@ -0,0 +1,153 @@ +#!/usr/bin/php + +Calcul des redevances INSEE pour un mois donné. + +Options : + -v Mode debug (Verbosité au maximum) + -m:SSAAMM Forcer le mois de calcul des redevances à SSAAMM (sinon mois précedent) + -c:XXX Limiter au client XXX + -t Table de test + +"; +$tableRdv='inseeRdv'; + +$argv=$_SERVER['argv']; + +//$iDb=new WDB('jo'); +$iDb=new WDB('sdv1'); +$iDb2=new WDB('sdv1'); +$tabUser=array(); + +$modeDebug=$idClient=false; +$dateMAJ=date('Ymt',mktime(0,0,0,date('m')-1,date('d'),date('Y'))); +$strMailInfo=''; + +for ($i=1,$j=0; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (substr($argv[$i],1,1)) { + case 'v': $modeDebug=true; break; + case 'c': $idClient = substr($argv[$i],3)*1; break; + case 'm': $dateMAJ = date('Ymt',mktime(0,0,0,substr($argv[$i],7,2),1,substr($argv[$i],3,4))); break; + case 't': $tableRdv='inseeRdv2'; break; + case '-': + case '?': die($strInfoScript); break; + default: die('Option '. $argv[$i] . " inconnue !\n"); + } + } +} + +$moisEnCours=substr($dateMAJ,0,6); +$dateDEB=substr($moisEnCours,0,6).'01'; + +/** Liste des clients **/ +if ($idClient) $strClient=" AND id=".$idClient; +else $strClient=''; +$tabTmp=$iDb->select('clients', 'id, nom', "1 $strClient", false, MYSQL_ASSOC); +$tabClient=array(); +foreach ($tabTmp as $tabTmp2) { + $tabClient[$tabTmp2['id']]=$tabTmp2['nom']; +} +$nbClients=count($tabClient); + +/** Liste des utilisateurs **/ +if ($idClient) $strClient=" AND idClient=".$idClient; +else $strClient=''; +$tabTmp=$iDb->select('utilisateurs', "login, idClient", "1 $strClient", false, MYSQL_ASSOC); +$tabUser=array(); +foreach ($tabTmp as $tabTmp2) { + $tabUser['_'.$tabTmp2['login']]=$tabTmp2['idClient']; +} +$nbUsers=count($tabUser); + +/** Calcul des redevances en niveau 1 : Navéa (Extranet/WS) **/ +$iClient=0; +foreach ($tabClient as $idClient=>$nomClient) { + $iClient++; + echo date('Y/m/d H:i:s')." - Client $iClient/$nbClients - Calcul des redevances type 1 pour '".$tabClient[$idClient]. "' en $moisEnCours : "; + $tabLogs=$iDb->select( 'logs', + 'siren, nic', + "idClient=$idClient AND page='identite' AND test=0 AND actifInsee=1 AND source=2 AND dateHeure BETWEEN $dateDEB AND $dateMAJ GROUP BY siren, nic", false, MYSQL_ASSOC); + $nbSiret=count($tabLogs); + echo "$nbSiret siret".EOL; + + $tabInsert=array('idClient'=>$idClient, + 'nomClient'=>$tabClient[$idClient], + 'mois'=>$moisEnCours, + 'produit'=>1, + 'nbSiret'=>$nbSiret, + ); + if (!$iDb2->insert($tableRdv, $tabInsert, false)) + $iDb2->update($tableRdv, $tabInsert, "idClient=$idClient AND mois=$moisEnCours AND produit=1", false); +} + +/** Calcul des redevances en niveau 2 : Odéa (Ciblage, sortie prévue en 2012) **/ + +/** Calcul des redevances en niveau 3 : Sirenages Clients et enrichissement (Depuis Aout 2010) **/ +$iClient=0; +foreach ($tabClient as $idClient=>$nomClient) { + $iClient++; + echo date('Y/m/d H:i:s')." - Client $iClient/$nbClients - Calcul des redevances type 3 pour '".$tabClient[$idClient]. "' en $moisEnCours : "; + $tabLogs=$iDb->select( 'jo.sirenage_clients', + 'siren, nic', + "idClient=$idClient AND siren>1000 AND nic>9 AND dateUpdate BETWEEN $dateDEB AND $dateMAJ GROUP BY siren, nic", false, MYSQL_ASSOC); + $nbSiret=count($tabLogs); + echo "$nbSiret siret".EOL; + + $tabInsert=array('idClient'=>$idClient, + 'nomClient'=>$tabClient[$idClient], + 'mois'=>$moisEnCours, + 'produit'=>3, + 'nbSiret'=>$nbSiret, + ); + if (!$iDb2->insert($tableRdv, $tabInsert, false)) + $iDb2->update($tableRdv, $tabInsert, "idClient=$idClient AND mois=$moisEnCours AND produit=3", false); +} + +/** Calcul des redevances en niveau 4 : Surveillances Insee (Depuis Janvier 2011) **/ +$iClient=0; +foreach ($tabClient as $idClient=>$nomClient) { + $iClient++; + echo date('Y/m/d H:i:s')." - Client $iClient/$nbClients - Calcul des redevances type 4 pour '".$tabClient[$idClient]. "' en $moisEnCours : "; + $tabLogs=$iDb->select( 'jo.surveillances_site s, sdv1.utilisateurs u, sdv1.clients c', + 's.siren, s.nic', + "s.siren>1000 AND s.source='insee' AND s.login=u.login AND u.idClient=$idClient AND u.idClient=c.id and c.test='Non' AND u.typeCompte='PROD' AND s.dateAjout BETWEEN $dateDEB AND $dateMAJ GROUP BY s.siren, s.nic", false, MYSQL_ASSOC); + $nbSiret=count($tabLogs); + echo "$nbSiret siret".EOL; + + $tabInsert=array('idClient'=>$idClient, + 'nomClient'=>$tabClient[$idClient], + 'mois'=>$moisEnCours, + 'produit'=>4, + 'nbSiret'=>$nbSiret, + ); + if (!$iDb2->insert($tableRdv, $tabInsert, false)) + $iDb2->update($tableRdv, $tabInsert, "idClient=$idClient AND mois=$moisEnCours AND produit=4", false); +} + +/** Calcul des redevances en niveau 5 : INEXISTANT **/ + +die(); + +?> \ No newline at end of file diff --git a/bin/calculScoresProfils.php b/bin/calculScoresProfils.php new file mode 100644 index 00000000..95238dfe --- /dev/null +++ b/bin/calculScoresProfils.php @@ -0,0 +1,477 @@ +#!/usr/bin/php +select( 'naf_conv', 'nafOut', "nafIn='$naf4ou5'"); + return $tabTmp[0]['nafOut']; +} + +echo date ('Y/m/d - H:i:s')." - Début du traitement.".EOL; + +/** Recherche de la dernière date de MAJ + **/ +if (!$dateDeb) { + echo date ('Y/m/d - H:i:s')." - Préparation des procédures à vérifier.".EOL; + $tabLast=$iDb->select( 'scores_secteurs', + 'max(dateUpdate) AS lastUpdate, max(dateInsert) AS lastInsert', + '1'); + $lastUpdate=$tabLast[0]['lastInsert']; + if ($tabLast[0]['lastUpdate']>$lastUpdate) $lastUpdate=$tabLast[0]['lastUpdate']; + echo date('Y/m/d - H:i:s') ." - La dernière vérification des procédures date de $lastUpdate !".EOL; +} else { + $lastUpdate=WDate::dateT('Ymd', 'Y-m-d', $dateDeb).' 00:00:00'; + if ($dateFin) { + $strDateFin=" AND (dateInsert<='".WDate::dateT('Ymd', 'Y-m-d', $dateFin)." 23:59:59' OR + dateUpdate<='".WDate::dateT('Ymd', 'Y-m-d', $dateFin)." 23:59:59' ) "; + echo date('Y/m/d - H:i:s') ." - Réinitialisation des stats secteurs du $lastUpdate au $dateFin !".EOL; + } else { + $strDateFin=''; + echo date('Y/m/d - H:i:s') ." - Réinitialisation des stats secteurs depuis le $lastUpdate !".EOL; + } +} + + +/** Traitements mensuels + **/ +if (DAY*1==1 || $initStatSecteur) { + + echo date ('Y/m/d - H:i:s')." - Préparation des stats secteurs mensuelles.".EOL; + $fields='ape_entrep, COUNT(*) AS nbEntrep'; + $where="source=2 AND actif=1 AND siege=1 GROUP BY ape_entrep ORDER BY ape_entrep ASC"; + + /** Initialisation des scores secteurs **/ + $tabTmp=$iDb->select('etablissements_old', $fields, $where, false, MYSQL_ASSOC); + if (mysql_errno()==1146) + $tabTmp=$iDb->select('etablissements', $fields, $where, false, MYSQL_ASSOC); + + $nbApe=count($tabTmp); + echo date ('Y/m/d - H:i:s')." - Il y a $nbApe stats secteurs mensuelles à initialiser...".EOL; + + $annee=YEAR; + $mois=MONTH; + $nbInsert=$nbUpdate=0; + foreach ($tabTmp as $secteur) { + $naf=$secteur['ape_entrep']; + $tabInsert=array('naf5'=> $naf, + 'annee'=> YEAR, + 'mois'=> MONTH, + 'nbEntrep'=> $secteur['nbEntrep'], + 'dateInsert'=> NOW, + ); + if ($iDb2->insert('scores_secteurs', $tabInsert)) + $nbInsert++; + else { + $iDb2->update('scores_secteurs', $tabInsert, "naf5='$naf' AND annee=$annee AND mois=$mois"); + $nbUpdate++; + } + + } + echo date ('Y/m/d - H:i:s')." - $nbInsert secteurs initialisées et $nbUpdate mis à jour.".EOL; +} + +if (DAY*1==1 || $initStatProfil) { + + echo date ('Y/m/d - H:i:s')." - Préparation des stats profils mensuelles.".EOL; + + /** Initialisation des scores profils **/ + //$nbPro=$iDb->select('insee.identite', 'APE_ENT, IF(ADR_DEP=97 OR ADR_DEP=98, SUBSTRING(ADR_CP,1,3), ADR_DEP) AS dep, SUBSTRING(CJ,1,2) as FJur, ROUND(if(DCRET>DCREN,DCRET/10000,DCREN/10000)) as anneeCrea, TEFF_ENT, TCA, count(*) as nbEntrep', + $nbPro=$iDb->select('insee.identite', 'APE_ENT, IF(ADR_DEP=97 OR ADR_DEP=98, SUBSTRING(ADR_CP,1,3), ADR_DEP) AS dep, CJ as FJur, ROUND(if(DCRET>DCREN,DCRET/10000,DCREN/10000)) as anneeCrea, TEFF_ENT, TCA, count(*) as nbEntrep', + "SIEGE=1 AND ACTIF=1 GROUP BY APE_ENT, dep, FJur, anneeCrea, TCA", false, MYSQL_ASSOC, true); + echo date ('Y/m/d - H:i:s')." - Il y a $nbPro stats profils mensuelles à initialiser...".EOL; + $annee=YEAR; + $mois=MONTH; + $nbInsert=$nbUpdate=0; + while ($secteur=$iDb->fetch(MYSQL_ASSOC)) { + //foreach ($tabTmp as $secteur) { + $naf=$secteur['APE_ENT']; + $dep=$secteur['dep']; + $fj=$secteur['FJur']; + $anneeCrea=$secteur['anneeCrea']; + $trEff=$secteur['TEFF_ENT']; + $trCA=$secteur['TCA']; + $tabInsert=array('annee'=> YEAR, + 'mois'=> MONTH, + 'naf5'=> $naf, + 'depSiege'=> $dep, + 'formeJur'=> $fj, + 'anneeCrea'=> $anneeCrea, + 'trEffectif'=> $trEff, + 'trCA'=> $trCA, + 'nbEntrep'=> $secteur['nbEntrep'], + 'dateInsert'=> NOW, + ); + if ($iDb2->insert('scores_profils', $tabInsert)) + $nbInsert++; + else { + $iDb2->update('scores_profils', $tabInsert, "annee=$annee AND mois=$mois AND naf5='$naf' AND depSiege=$dep AND formeJur=$fj AND anneeCrea=$anneeCrea AND trEffectif='$trEff' AND trCA=$trCA"); + $nbUpdate++; + } + } + echo date ('Y/m/d - H:i:s')." - $nbInsert profils initialisées et $nbUpdate mis à jour.".EOL; +} + + +if (!$initStatProfil && !$initStatSecteur) { + + echo date ('Y/m/d - H:i:s')." - Préparation des stats secteurs et profils pour les interdictions quotidiennes.".EOL; + $nbInsertSecteur=$nbUpdateSecteur=$nbInsertProfil=$nbUpdateProfil=0; + +/** Mise à jour des Jugements FP IG **/ +$nbAnnonces=$iDb->select( + 'bodacc_detail', + 'siren, sirenValide, typeEven, dateJugement, Bodacc_Date_Parution AS dateSource, dateInsert, dateUpdate', + "siren>1000 AND (dateInsert>'$lastUpdate' OR dateUpdate>'$lastUpdate') $strDateFin + AND dateJugement>='2005-01-01' AND + (typeEven LIKE '%1600%' OR typeEven LIKE '%1601%' OR typeEven LIKE '%1610%' OR typeEven LIKE '%1611%') + ORDER BY dateSource ASC;", + false, MYSQL_ASSOC, true); +echo date ('Y/m/d - H:i:s')." - Il y a $nbAnnonces annonces d'interdictions à vérifier...".EOL; +while ($annonce=$iDb->fetch(MYSQL_ASSOC)) { + $siren=$annonce['siren']; + $typeEven=$annonce['typeEven']; + $dateJuge=$annonce['dateJugement']; + $dateInsert=$annonce['dateInsert']; + /** Initialisation des scores secteurs **/ + $tabTmp=explode('-', $dateJuge); + $annee=$tabTmp[0]; + $mois=$tabTmp[1]; + $tabIdentite=$iInsee->getIdentiteEntreprise($siren, 0, 0, false, false); + $naf=$tabIdentite['NafEnt']; + if (strlen($naf)<5) $naf=getNaf5($naf); + + $fj=$tabIdentite['FJ']; + $dep=$tabIdentite['Dept']; + if ($dep>96 && $dep<99) $dep=''.$dep.substr($tabIdentite['codeCommune'],0,1); + $anneeCrea=$tabIdentite['DateCreaEn']; + if ($anneeCrea>$tabIdentite['DateCreaEt']) $anneeCrea=$tabIdentite['DateCreaEt']; + $trEff=$tabIdentite['EffEnTr']; + $trCA=$tabIdentite['TrancheCA']; + + /** Mise à jour des scores secteurs **/ + if ($modeDebug) echo "IGFP $siren\t$typeEven\t$dateJuge\t$dateInsert "; + $tabTmp=$iDb2->select( 'scores_secteurs', + 'nbInter, nbEntrep, annee, mois', + "naf5='$naf' AND annee=$annee AND mois=$mois", + false, MYSQL_ASSOC); + if (count($tabTmp)>0) $nbInter=$tabTmp[0]['nbInter'] + 1; + else $nbInter=1; + + $tabUpdate=array('nbInter'=> $nbInter); + $retTmp=$iDb2->update('scores_secteurs', $tabUpdate, "naf5='$naf' AND annee=$annee AND mois=$mois"); + if (!$retTmp || $iDb2->getAffectedRows()==0) { + $tabInsert=array_merge($tabUpdate, array( 'naf5'=>$naf, + 'annee'=>$annee, + 'mois'=>$mois, + 'dateInsert'=>date('YmdHis'), + )); + $iDb2->insert('scores_secteurs', $tabInsert); + if ($modeDebug) echo "SECTEURS:INSERT=>$nbProcDB ($naf/$annee-$mois)"; + $nbInsertSecteur++; + } else { + if ($modeDebug) echo "SECTEURS:UPDATE=>$nbProcDB ($naf/$annee-$mois)"; + $nbUpdateSecteur++; + } + if ($modeDebug) echo EOL; + + /** Mise à jour des scores profils **/ + if ($modeDebug) echo "IGFP $siren\t$typeEven\t$dateJuge\t$dateInsert "; + $tabTmp=$iDb2->select( 'scores_profils', + 'nbInter, nbEntrep, annee, mois', + "annee=$annee AND mois=$mois AND naf5='$naf' AND depSiege=$dep AND formeJur=$fj AND anneeCrea=$anneeCrea AND trEffectif='$trEff' AND trCA=$trCA", + false, MYSQL_ASSOC); + if (count($tabTmp)>0) $nbInter=$tabTmp[0]['nbInter'] + 1; + else $nbInter=1; + + $tabUpdate=array('nbInter'=> $nbInter); + $retTmp=$iDb2->update('scores_profils', $tabUpdate, "annee=$annee AND mois=$mois AND naf5='$naf' AND depSiege=$dep AND formeJur=$fj AND anneeCrea=$anneeCrea AND trEffectif='$trEff' AND trCA=$trCA"); + if (!$retTmp || $iDb2->getAffectedRows()==0) { + $tabInsert=array_merge($tabUpdate, array( 'annee'=>$annee, + 'mois'=>$mois, + 'naf5'=>$naf, + 'depSiege'=>$dep, + 'formeJur'=>$fj, + 'anneeCrea'=>$anneeCrea, + 'trEffectif'=>$trEff, + 'trCA'=>$trCA, + 'dateInsert'=>date('YmdHis'), + )); + $iDb2->insert('scores_profils', $tabInsert); + if ($modeDebug) echo "PROFILS:INSERT=>$nbProcDB ($naf/$annee-$mois)"; + $nbInsertProfil++; + } else { + if ($modeDebug) echo "PROFILS:UPDATE=>$nbProcDB ($naf/$annee-$mois)"; + $nbUpdateProfil++; + } + if ($modeDebug) echo EOL; +} +echo date ('Y/m/d - H:i:s')." - Interdictions : $nbAnnonces annonces vérifiées.".EOL; + +echo date ('Y/m/d - H:i:s')." - Stats Secteurs : $nbInsertSecteur ajouts et $nbUpdateSecteur MAJ.".EOL; +echo date ('Y/m/d - H:i:s')." - Stats Profils : $nbInsertProfil ajouts et $nbUpdateProfil MAJ.".EOL; + +echo date ('Y/m/d - H:i:s')." - Fin des stats secteurs et profils pour les interdictions quotidiennes.".EOL; + + + + + +echo date ('Y/m/d - H:i:s')." - Préparation des stats secteurs et profils pour les Procédures quotidiennes.".EOL; +$nbDejaProcol=$nbNouvProcol=$nbInsertSecteur=$nbUpdateSecteur=$nbInsertProfil=$nbUpdateProfil=0; + +/** Initialisation des scores secteurs **/ +$query="(SELECT siren, sirenValide, typeEven, dateJugement, Bodacc_Date_Parution AS dateSource, dateInsert FROM bodacc_detail WHERE siren>1000 AND dateInsert>'$lastUpdate' $strDateFin AND dateJugement>='2005-01-01' AND ( typeEven LIKE '%1100%' OR typeEven LIKE '%1101%' OR typeEven LIKE '%1200%' OR typeEven LIKE '%1201%' OR typeEven LIKE '%1202%' OR typeEven LIKE '%1207%' OR typeEven LIKE '%1209%' OR typeEven LIKE '%1210%' OR typeEven LIKE '%1211%' OR typeEven LIKE '%1212%' OR typeEven LIKE '%1214%' OR typeEven LIKE '%1216%' OR typeEven LIKE '%1300%' OR typeEven LIKE '%1301%' OR typeEven LIKE '%1302%' OR typeEven LIKE '%1303%' OR typeEven LIKE '%1304%' OR typeEven LIKE '%1305%' OR typeEven LIKE '%1306%' OR typeEven LIKE '%1307%' OR typeEven LIKE '%1308%' OR typeEven LIKE '%1309%' OR typeEven LIKE '%1310%' OR typeEven LIKE '%1311%' OR typeEven LIKE '%1312%' OR typeEven LIKE '%1313%' OR typeEven LIKE '%1410%' OR typeEven LIKE '%1415%' OR typeEven LIKE '%1416%' OR typeEven LIKE '%1417%' OR typeEven LIKE '%1418%' OR typeEven LIKE '%1419%' OR typeEven LIKE '%1507%' OR typeEven LIKE '%1515%' OR typeEven LIKE '%1540%' OR typeEven LIKE '%1541%' OR typeEven LIKE '%1542%' OR typeEven LIKE '%1543%' OR typeEven LIKE '%1544%' OR typeEven LIKE '%1545%' OR typeEven LIKE '%1546%' OR typeEven LIKE '%1550%' OR typeEven LIKE '%1600%' OR typeEven LIKE '%1601%' OR typeEven LIKE '%1602%' OR typeEven LIKE '%1603%' OR typeEven LIKE '%1604%' OR typeEven LIKE '%1610%' OR typeEven LIKE '%1611%' OR typeEven LIKE '%1999%' )) +UNION +(SELECT siren, sirenValide, typeEven, dateJugement, dateSource, dateInsert FROM annonces where siren>1000 AND dateInsert>'$lastUpdate' $strDateFin AND dateJugement>='2005-01-01' AND typeEven IN (1100,/*Ouverture sauvegarde*/ +1101,/*Jugement arrêtant plan de sauvegarde*/ +1200,/*Redressement Judiciaire*/ +1201,/*Conversion sauvegarde en Redressement Judiciaire*/ +1202,/*Renouvellement de la période d'observation*/ +1207,/*Règlements amiables*/ +1209,/*Règlement judiciaire*/ +1210,/*Production de titres et créances*/ +1211,/*Redressement Judiciaire par extension au(x) gérant(s)*/ +1212,/*Réforme de Liquidation Judiciaire en Redressement Judiciaire*/ +1214,/*Avis de dépôt de l'état des créances (Loi de 1985)*/ +1216,/*Autre avis de dépôt*/ +1300,/*Conversion Redressement Judiciaire en Liquidation Judiciaire*/ +1301,/*Ouverture Liquidation Judiciaire*/ +1302,/*Ouverture Liquidation Judiciaire Simplifiée*/ +1303,/*Ouverture Liquidation Judiciaire sur résolution du plan*/ +1304,/*Réouverture Liquidation Judiciaire*/ +1305,/*Liquidation Judiciaire*/ +1306,/*Liquidation Judiciaire simplifiée*/ +1307,/*Conversion sauvegarde en Liquidation Judiciaire*/ +1308,/*Fin du régime de Liquidation Judiciaire Simplifiée*/ +1309,/*Conversion Liquidation Judiciaire en Liquidation Judiciaire Simplifiée*/ +1310,/*Procédure d'insolvabilité européenne*/ +1311,/*Liquidation Judiciaire par extension au(x) gérant(s)*/ +1312,/*Liquidation Judiciaire avec continuation d'exploitation*/ +1313,/*Liquidation Judiciaire sans remise des accessoires*/ +1410,/*Suite règlement/liquidation*/ +1415,/*Prolongement du plan cession*/ +1416,/*Jugement constatant la bonne exécution du plan*/ +1417,/*Jugement d'extension de liquidation judiciaire*/ +1418,/*Jugement d'extension d'une procédure de redressement judiciaire*/ +1419,/*Jugement d'extension d'une procédure de sauvegarde*/ +1507,/*Extrait d'arrêt de la cour d'appel*/ +1515,/*Arrêt divers*/ +1540,/*Ordonnance statuant sur les contestations du projet de répartition*/ +1541,/*Rétractation de prononcé de liquidation judiciaire sur tierce opposition*/ +1542,/*Rétractation de jugement d'ouverture d'une procédure de sauvegarde sur tierce opposition*/ +1543,/*Rétractation de jugement d'ouverture d'une procédure de redressement judiciaire sur tierce opposition*/ +1544,/*Rétractation de jugement d'ouverture d'une procédure de liquidation judiciaire sur tierce opposition*/ +1545,/*Rétractation de jugement d'ouverture sur tierce opposition*/ +1546,/*Autre rétractation sur tierce opposition*/ +1550,/*Jugement d'homologation de l'accord*/ +1600,/*Faillite personnelle*/ +1601,/*Interdiction de gérer*/ +1602,/*Jugement de réhabilitation*/ +1603,/*Liquidation de biens*/ +1604,/*Banqueroute +1605,/*Jugement autorisant la reprise des poursuites individuelles*/ +1610,/*Faillite personnelle (Loi de 1985)*/ +1611,/*Interdiction de gérer (Loi de 1985)*/ +1999 /*Autre procédure collective*/ ) +) ORDER BY dateSource ASC;"; +if ($modeDebug) echo date ('Y/m/d - H:i:s')." - $query".EOL; +$res=$iDb->query($query); +$nbAnnonces=mysql_num_rows($res); + +echo date ('Y/m/d - H:i:s')." - Il y a $nbAnnonces annonces d'ouverture à vérifier...".EOL; +$sirenPre=false; + +while ($annonce=$iDb->fetch(MYSQL_ASSOC)) { + $siren=$annonce['siren']; + if ($siren==$sirenPre) continue; + + $typeEven=$annonce['typeEven']; + $dateJuge=$annonce['dateJugement']; + $dateInsert=$annonce['dateInsert']; + /** Initialisation des scores secteurs **/ +$query="(SELECT siren, sirenValide, typeEven, dateJugement, Bodacc_Date_Parution AS dateSource, dateInsert FROM bodacc_detail WHERE siren=$siren AND (dateInsert<'$dateInsert' OR dateJugement<'$dateJuge') AND Rubrique='procol') +UNION +(SELECT siren, sirenValide, typeEven, dateJugement, dateSource, dateInsert FROM annonces where siren=$siren AND (dateInsert<'$dateInsert' OR dateJugement<'$dateJuge') AND typeEven BETWEEN 1100 AND 1999) ORDER BY siren;"; +//echo date ('Y/m/d - H:i:s')." - $query".EOL; +$res2=$iDb2->query($query); +$nbProcol=mysql_num_rows($res2); + + if ($modeDebug) echo "ProCol $siren\t$typeEven\t$dateJuge\t$dateInsert "; + + if ($nbProcol>0) { + if ($modeDebug) echo "($nbProcol ProCol)".EOL; + $nbDejaProcol++; + } else { + $strIdAnn=" AND e.CODEVE BETWEEN 50 AND 79 AND e.DATE>=".(YEAR-12).MONTH.DAY; + $res2=$iDbHisto->select( + 'entrep e, texte x, tribunaux t', + 'e.ANBASE, e.NOBOD, e.CODTRI, e.JAL, e.DATE, e.CODEVE, e.SSCODE, e.DEPT, e.NOANN, e.ROLE, e.SIREN, e.E1GSIR, e.E1GNIC, x.annonceNum, x.annonceTxt, t.triNom, t.triSiret', + "e.E1GSIR=$siren AND e.ANBASE=x.annonceNum AND e.CODTRI=t.triCode $strIdAnn AND e.DATE BETWEEN 19960101 AND 20041231 GROUP BY e.ANBASE ORDER BY e.DATE DESC", true, MYSQL_ASSOC); + $nbProcolHisto=count($res2); + if ($nbProcolHisto>0) { + if ($modeDebug) echo "($nbProcolHisto ProCol histo.)".EOL; + $nbDejaProcol++; + } else { + if ($modeDebug) echo "NOUVELLE PROCEDURE "; + $nbNouvProcol++; + // Ajouter dans la table + $tabTmp=explode('-', $dateJuge); + $annee=$tabTmp[0]; + // if ($annee<2007) continue; + $mois=$tabTmp[1]; + $tabIdentite=$iInsee->getIdentiteEntreprise($siren, 0, 0, false, false); + $naf=$tabIdentite['NafEnt']; + if (strlen($naf)<5) $naf=getNaf5($naf); + + $fj=$tabIdentite['FJ']; + $dep=$tabIdentite['Dept']; + if ($dep>96 && $dep<99) $dep=''.$dep.substr($tabIdentite['codeCommune'],0,1); + $anneeCrea=$tabIdentite['DateCreaEn']; + if ($anneeCrea>$tabIdentite['DateCreaEt']) $anneeCrea=$tabIdentite['DateCreaEt']; + $trEff=$tabIdentite['EffEnTr']; + $trCA=$tabIdentite['TrancheCA']; + + /** Mise à jour des scores secteurs **/ + $tabTmp=$iDb2->select( 'scores_secteurs', + 'nbProcol, nbEntrep, annee, mois', + "naf5='$naf' AND annee=$annee AND mois=$mois", + false, MYSQL_ASSOC); + if (count($tabTmp)>0) $nbProcDB=$tabTmp[0]['nbProcol'] + 1; + else $nbProcDB=1; + + $tabUpdate=array('nbProcol'=> $nbProcDB); + $retTmp=$iDb2->update('scores_secteurs', $tabUpdate, "naf5='$naf' AND annee=$annee AND mois=$mois"); + if (!$retTmp || $iDb2->getAffectedRows()==0) { + $tabInsert=array_merge($tabUpdate, array( 'naf5'=>$naf, + 'annee'=>$annee, + 'mois'=>$mois, + 'dateInsert'=>date('YmdHis'), + )); + $iDb2->insert('scores_secteurs', $tabInsert); + if ($modeDebug) echo "SECTEURS:INSERT=>$nbProcDB ($naf/$annee-$mois)"; + $nbInsertSecteur++; + } else { + if ($modeDebug) echo "SECTEURS:UPDATE=>$nbProcDB ($naf/$annee-$mois)"; + $nbUpdateSecteur++; + } + if ($modeDebug) echo EOL; + + /** Mise à jour des scores profils **/ + if ($modeDebug) echo "ProCol $siren\t$typeEven\t$dateJuge\t$dateInsert NOUVELLE PROCEDURE "; + + $tabTmp=$iDb2->select( 'scores_profils', + 'nbProcol, nbEntrep, annee, mois', + "annee=$annee AND mois=$mois AND naf5='$naf' AND depSiege=$dep AND formeJur=$fj AND + anneeCrea=$anneeCrea AND trEffectif='$trEff' AND trCA=$trCA", + false, MYSQL_ASSOC); + if (count($tabTmp)>0) $nbProcDB=$tabTmp[0]['nbProcol'] + 1; + else $nbProcDB=1; + + $tabUpdate=array('nbProcol'=> $nbProcDB); + $retTmp=$iDb2->update('scores_profils', $tabUpdate, "annee=$annee AND mois=$mois AND naf5='$naf' AND + depSiege=$dep AND formeJur=$fj AND anneeCrea=$anneeCrea AND trEffectif='$trEff' AND trCA=$trCA"); + if (!$retTmp || $iDb2->getAffectedRows()==0) { + $tabInsert=array_merge($tabUpdate, array( 'annee'=>$annee, + 'mois'=>$mois, + 'naf5'=>$naf, + 'depSiege'=>$dep, + 'formeJur'=>$fj, + 'anneeCrea'=>$anneeCrea, + 'trEffectif'=>$trEff, + 'trCA'=>$trCA, + 'dateInsert'=>date('YmdHis'), + )); + $iDb2->insert('scores_profils', $tabInsert); + if ($modeDebug) echo "PROFILS:INSERT=>$nbProcDB ($naf/$annee-$mois)"; + $nbInsertProfil++; + } else { + if ($modeDebug) echo "PROFILS:UPDATE=>$nbProcDB ($naf/$annee-$mois)"; + $nbUpdateProfil++; + } + + if ($modeDebug) echo EOL; + } + } + $sirenPre=$siren; +} + +echo date ('Y/m/d - H:i:s')." - Procédures Collectives : $nbNouvProcol entreprises In Bonis sur $nbAnnonces annonces ($nbDejaProcol déjà en ProCol).".EOL; + +echo date ('Y/m/d - H:i:s')." - Stats Secteurs : $nbInsertSecteur ajouts et $nbUpdateSecteur MAJ pour $nbNouvProcol nouv. ProCol ($nbAnnonces annonces vérifiées).".EOL; +echo date ('Y/m/d - H:i:s')." - Stats Profils : $nbInsertProfil ajouts et $nbUpdateProfil MAJ pour $nbNouvProcol nouv. ProCol ($nbAnnonces annonces vérifiées).".EOL; + +echo date ('Y/m/d - H:i:s')." - Fin des stats secteurs et profils pour les Procédures quotidiennes.".EOL; + +} + +echo date ('Y/m/d - H:i:s')." - Fin du traitement.".EOL; + +?> \ No newline at end of file diff --git a/bin/checkSphinx.php b/bin/checkSphinx.php new file mode 100644 index 00000000..70e2b067 --- /dev/null +++ b/bin/checkSphinx.php @@ -0,0 +1,222 @@ +#!/usr/bin/php + '002', + 'SourceId' => '19515247', + 'Siren' => '509955068', + 'Nic' => '00010', + 'Nom' => 'FININFO', + ), + array( 'Source' => '002', + 'SourceId' => '25732397', + 'Siren' => '800810517', + 'Nic' => '00014', + 'Nom' => 'SARL FIN INFORMATIQUE', + ), + array( 'Source' => '002', + 'SourceId' => '10736579', + 'Siren' => '323874289', + 'Nic' => '00024', + 'Nom' => 'FININFO', + ), + array( 'Source' => '002', + 'SourceId' => '19328575', + 'Siren' => '323874289', + 'Nic' => '00057', + 'Nom' => 'SIX FINANCIAL INFORMATION FRANCE', + ), + array( 'Source' => '002', + 'SourceId' => '10802699', + 'Siren' => '323874289', + 'Nic' => '00040', + 'Nom' => 'FININFO', + ), + array( 'Source' => '002', + 'SourceId' => '12085589', + 'Siren' => '303897607', + 'Nic' => '00030', + 'Nom' => 'GAUDFRIN JEAN PIERRE', + ), + array( 'Source' => '002', + 'SourceId' => '10034491', + 'Siren' => '383133667', + 'Nic' => '00014', + 'Nom' => 'FININFO', + ), + array( 'Source' => '002', + 'SourceId' => '392194', + 'Siren' => '398781880', + 'Nic' => '00016', + 'Nom' => 'GOUYET*PATRICK/', + ), + array( 'Source' => '002', + 'SourceId' => '15211920', + 'Siren' => '432148880', + 'Nic' => '00011', + 'Nom' => 'E FININFO', + ), + array( 'Source' => '002', + 'SourceId' => '18165321', + 'Siren' => '323874289', + 'Nic' => '00032', + 'Nom' => 'SIX FINANCIAL INFORMATION FRANCE', + ), + array( 'Source' => '003', + 'SourceId' => '436706', + 'Nom' => 'FININFO GOLF', + ), + array( 'Source' => '003', + 'SourceId' => '1149146', + 'Nom' => 'ASSOCIATION SPORTIVE ET CULTURELLE FININFO', + )); + +foreach ($tabCtrl as $i=>$tabTmp) + $tabCtrlTrouv[$i]=false; + +$tabTmp=$mInsee->rechercheEtab($raisonSociale, $adresse, $codePostal, $ville, $siege, $actif, $deb, $nbRep, $maxRep); + +if ($tabTmp['nbReponsesTotal']<>$nbRepConnues) { + $erreur=true; + $message=date('Y/m/d - H:i:s') ." - ERREUR : la recherche Sphinx '$raisonSociale' retourne ".$tabTmp['nbReponsesTotal']." résultats au lieu de $nbRepConnues !".EOL; + echo $message; + $messageMail.=$message; +} elseif ($tabTmp['nbReponsesTotal']==$nbRepConnues) { + $tabEtabTrouve=array(); + //print_r(arrayRecursiveDiff($tabCtrl,$tabTmp['reponses'])); + //print_r($tabTmp['reponses']); + //die(); + //print_r($tabCtrl);die(); + foreach ($tabTmp['reponses'] as $i=>$tabEtab) { + foreach ($tabCtrl as $j=>$tabEtabCtrl) { + //echo "$i. Je compare '".$tabEtabCtrl['Nom']."' avec '".$tabEtab['Nom']."'".EOL; + if ($tabEtabCtrl['Source']==$tabEtab['Source'] && + $tabEtabCtrl['SourceId']==$tabEtab['SourceId'] && + $tabEtabCtrl['Nom']==$tabEtab['Nom']) { + if ((isset($tabEtabCtrl['Siren']) && $tabEtabCtrl['Siren']<>$tabEtab['Siren']) || + (isset($tabEtabCtrl['Nic']) && $tabEtabCtrl['Nic']<>$tabEtab['Nic'])) + continue; + else { + $tabEtabTrouve[$i]=$j; + $tabCtrlTrouv[$j]=true; + } + } + } + } + //print_r($tabEtabTrouve); + //print_r($tabCtrlTrouv); + + foreach ($tabCtrlTrouv as $j=>$trouve) { + if (!$trouve) { + $erreur=true; + $message=date('Y/m/d - H:i:s') ." - ERREUR : la recherche Sphinx '$raisonSociale' ne retourne pas ".$tabCtrl[$j]['Nom']." dans les $nbRepConnues résultats !".EOL; + echo $message; + $messageMail.=$message; + } + } +} + +if (!$erreur) { + $message=date('Y/m/d - H:i:s') ." - La recherche Sphinx '$raisonSociale' retourne les ".$tabTmp['nbReponsesTotal']." résultats attendus.".EOL; + echo $message; +} else { + @sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,supportdev@scores-decisions.com,support@scores-decisions.com', "Contrôle Sphinx ERREUR", $messageMail); +} + +die(); + + +//echo date('Y/m/d - H:i:s') ." - FIN du programme de SIRENAGE des annonces mal sirenés du BODACC.".EOL; + +function arrayRecursiveDiff($array1, $array2) { + $result = array(); + foreach($array1 as $key => $val) { + if(isset($array2[$key])){ + if(is_array($val) && $array2[$key]){ + $result[$key] = arrayRecursiveDiff($val, $array2[$key]); + } + } else { + $result[$key] = $val; + } + } + + return $result; +} + +die(); + ?> \ No newline at end of file diff --git a/bin/consolideDiri.php b/bin/consolideDiri.php new file mode 100644 index 00000000..4e558903 --- /dev/null +++ b/bin/consolideDiri.php @@ -0,0 +1,180 @@ +#!/usr/bin/php +1) +{ + for ($i=1; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (substr($argv[$i],1,1)) { + case 'b': + $all=false; + $baseBodacc=true; + break; + case 'n': + $all=false; + $baseInpi=true; + break; + case 'h': + $all=false; + $baseBodaccHisto=true; + break; + case '-': + case '?': + die($strInfoScript); + break; + default: + die('Option '. $argv[$i] . " inconnue !\n"); + break; + } + } +} +} + +if (file_exists(REP_TEMP.'stockInsee.lock')) { + $message='Stock en cours de chargement "'.file_get_contents(REP_TEMP.'stockInsee.lock').'"'; + sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Consolidation des dirigeants non traitée car trimestriel en cours', $message); + die(); +} + +/** Par défaut, on consolide toutes les sources **/ +if ($all) { + $baseInpi=$baseBodacc=$baseBodaccHisto=true; +} + +$iDbSdv1=new WDB('sdv1'); +$ret = $iDbSdv1->insert('sphinx_idx', array('nom'=>'jo.dirigeants', 'createBegin'=>date('YmdHis'))); +$consolidationId = null; +if (is_int($ret) ) { + $consolidationId = $ret; +} +echo date ('Y/m/d - H:i:s')." - Sphinx Idx id=".$consolidationId.EOL; + +$iDb=new WDB('jo'); +echo date ('Y/m/d - H:i:s')." - Création de la nouvelle table dirigeants.".EOL; +if (!$iDb->query("DROP TABLE IF EXISTS jo.dirigeants_tmp;")) + die($iDb->getLastError()); + +if (!$iDb->query("CREATE TABLE jo.dirigeants_tmp ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `source` tinyint(3) unsigned zerofill NOT NULL, + `source_id` bigint(20) unsigned NOT NULL, + `siren` int(9) unsigned zerofill NOT NULL, + `adr_dep` smallint(3) unsigned NOT NULL, + `typeDir` enum('PP','PM') NOT NULL, + `dirSiren` int(9) unsigned zerofill NOT NULL, + `dirRS` varchar( 60 ) NOT NULL, + `civilite` enum('M','MME','MLLE') DEFAULT NULL, + `nom` char(60) NOT NULL, + `prenom` char(40) NOT NULL, + `naissance_nom` char(60) NOT NULL, + `naissance_date` date NOT NULL, + `naissance_lieu` char(35) NOT NULL, + `fonction_code` smallint(4) unsigned zerofill NOT NULL, + `actif` tinyint(1) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `source` (`source`,`source_id`), + UNIQUE KEY `idxUnique` (`siren`,`typeDir`,`dirSiren`,`dirRS`,`nom`,`prenom`,`naissance_nom`,`naissance_date`,`naissance_lieu`,`fonction_code`), + KEY `idxSiren` (`siren`), + KEY `idxDirSiren` (`dirSiren`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Index des Dirigeants';", true)) +die($iDb->getLastError()); + +$strMailInfo=date ('Y/m/d - H:i:s')." - Consolidation des dirigeants.".EOL; +if ($baseInpi) { + echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table dirigeants depuis le RNCS.".EOL; + + $retTmp=$iDb->select('jo.rncs_dirigeants', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC); + $nbEtab=$retTmp[0]['nbEtab']; + echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants à consolider depuis le RNCS...".EOL; + + if(!$iDb->query("INSERT IGNORE INTO jo.dirigeants_tmp SELECT 0 AS id, 5 AS source, id AS source_id, siren, adr_dep, + typeDir, dirSiren, dirRS, civilite, nom, prenom, naissance_nom, naissance_date, naissance_lieu, + fonction_code, actif%10 as actif + FROM jo.rncs_dirigeants")) + die($iDb->getLastError()); + + $retTmp=$iDb->select('jo.dirigeants_tmp', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC); + $nbEtab=$retTmp[0]['nbEtab']; + echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants RNCS consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants RNCS consolidés.".EOL; +} + +if ($baseBodacc) { + $retTmp=$iDb->select('jo.bodacc_dirigeants', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC); + $nbEtab=$retTmp[0]['nbEtab']; + echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants à consolider depuis le Bodacc...".EOL; + + if(!$iDb->query("INSERT IGNORE INTO dirigeants_tmp + SELECT NULL AS id, 1 AS source, id AS source_id, siren, NULL AS dep, IF(prenom<>'','PP','PM') AS typeDir, 0 AS dirSiren, rs AS dirRS, NULL AS civilite, nom, prenom, nomUsage AS naissance_nom, 0 AS naissance_date, NULL AS naissance_lieu, fonction AS fonction_code, IF(depart=1,0,1) AS actif + FROM bodacc_dirigeants;")) + die($iDb->getLastError()); + + $retTmp=$iDb->select('jo.dirigeants_tmp', 'COUNT(*) AS nbEtab', 'source=1', false,MYSQL_ASSOC); + $nbEtab=$retTmp[0]['nbEtab']; + echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants BODACC consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants BODACC consolidés.".EOL; +} + +if ($baseBodaccHisto) { + $retTmp=$iDb->select('jo.bodacc_dirigeants_histo', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC); + $nbEtab=$retTmp[0]['nbEtab']; + echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants à consolider depuis le Bodacc Histo...".EOL; + + if(!$iDb->query("INSERT IGNORE INTO dirigeants_tmp + SELECT NULL AS id, 6 AS source, id AS source_id, siren, NULL AS dep, IF(prenom<>'','PP','PM') AS typeDir, 0 AS dirSiren, rs AS dirRS, NULL AS civilite, nom, prenom, nomUsage AS naissance_nom, 0 AS naissance_date, NULL AS naissance_lieu, fonction AS fonction_code, IF(depart=1,0,1) AS actif + FROM bodacc_dirigeants_histo;")) + die($iDb->getLastError()); + + $retTmp=$iDb->select('jo.dirigeants_tmp', 'COUNT(*) AS nbEtab', 'source=6', false,MYSQL_ASSOC); + $nbEtab=$retTmp[0]['nbEtab']; + echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants BODACC Histo consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbEtab dirigeants BODACC Histo consolidés.".EOL; +} + +$iDb->query("ALTER TABLE jo.dirigeants_tmp PACK_KEYS=1;"); +echo date ('Y/m/d - H:i:s')." - Commpression des Index de la table OK.".EOL; + +if ( $consolidationId !== null ) { + $ret = $iDbSdv1->update('sphinx_idx', array('createEnd'=>date('YmdHis'),'nbLines'=>$nbEtab), "id=$consolidationId"); +} + +echo date ('Y/m/d - H:i:s')." - FIN de la consolidation de la base Dirigeants".EOL; +$strMailInfo.=date ('Y/m/d - H:i:s')." - FIN de la consolidation de la base Dirigeants".EOL; + +sendMail('production@scores-decisions.com', 'support@scores-decisions.com', 'Consolidation des dirigeants', $strMailInfo); +die(); + ?> \ No newline at end of file diff --git a/bin/consolideEtab.php b/bin/consolideEtab.php new file mode 100644 index 00000000..afb0b3b1 --- /dev/null +++ b/bin/consolideEtab.php @@ -0,0 +1,1257 @@ +#!/usr/bin/php +1) +{ + for ($i=1; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (substr($argv[$i],1,1)) { + case 'a': $all=false; $joAsso=true; break; + case 'g': $all=false; $iGreffe=true; break; + case 'l': $all=false; $iLiens=true; break; + case 'm': $all=false; $iMarques=true; break; + case 'b': $all=false; $joBodacc=true; break; + case 'i': $all=false; $baseInsee=true; break; + case 'n': $all=false; $baseInpi=true; break; + case 'r': $reset=true; break; + case 'p': $pageRankOnly=true; break; + case 't': $table=strtolower(substr($argv[$i],3)); break; + case '-': + case '?': die($strInfoScript); break; + default: die('Option '. $argv[$i] . " inconnue !\n"); break; + } + } +} +} + +if (file_exists(REP_TEMP.'stockInsee.lock')) { + $message='Stock en cours de chargement "'.file_get_contents(REP_TEMP.'stockInsee.lock').'"'; + sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Consolidation des établissements non traitée car trimestriel en cours', $message); + die(); +} + +/** Par défaut, on consolide toutes les sources **/ +if ($all) { + $joAsso=$joBodacc=$baseInsee=$baseInpi=$iGreffe=$iLiens=$iMarques=true; +} + +$iDb=new WDB('jo'); +global $iBodacc; +$iBodacc=new MBodacc(); + + +function getCodePrefectures($strPrefecture, $dep=0) { + global $iBodacc; + $type='?'; + + if (preg_match('/sous.pr.f.cture(.*)/i',$strPrefecture, $matches)) { + $pref=$matches[1]; + $type='B'; + $tabTmp=$iBodacc->getTribunauxParDep($dep); + foreach ($tabTmp as $i=>$tribunal) + if ($tribunal['triType']=='B') { + $spref=levenshtein($tribunal['triNom'], 'SOUS PREFECTURE '.strtoupper(trim($pref))); + //echo $tribunal['triNom'] .'<=>SOUS PREFECTURE '.strtoupper($pref)."\n"; + //print_r($matches); + if ($spref<=5) { + return $tribunal['triCode']; + break; + } + } + } + elseif (preg_match('/pr.f.cture(.*)/i',$strPrefecture, $matches)) { + $pref=$matches[1]; + $type='A'; + $tabTmp=$iBodacc->getTribunauxParDep($dep); + foreach ($tabTmp as $i=>$tribunal) + if ($tribunal['triType']=='A') { + return $tribunal['triCode']; + break; + } + } + + if ($dep==75 || preg_match('/police/i',$strPrefecture)) return 'PARISA'; + + return ''; +} +// Début Test +/* +$retTmp=$iDb->select('asso', 'Sous_Prefecture, Departement, COUNT(*) AS nb', '1 GROUP BY Sous_Prefecture ORDER BY nb DESC', false, MYSQL_ASSOC); +$nbEtab=count($retTmp); +echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab prefectures différentes à identifier.".EOL; +foreach ($retTmp as $i=>$tabTmp) { + $nb=$tabTmp['nb']*1; + $dep=$tabTmp['Departement']*1; + $strPref=$tabTmp['Sous_Prefecture']; + $codTri=getCodePrefectures($strPref, $dep); + echo "$nb - $dep:$codTri:$strPref\n"; +} + +die(); +// Fin test +*/ + +if (!$pageRankOnly) { + +$iDb2=new WDB('jo'); +$iDbInsee=new WDB('insee'); + +$iInsee=new MInsee(); +//if (0==1) { + + +echo date ('Y/m/d - H:i:s')." - Création de la nouvelle table établissements.".EOL; + +$iDbSdv1=new WDB('sdv1'); +$ret = $iDbSdv1->insert('sphinx_idx', array('nom'=>'jo.etablissements', 'createBegin'=>date('YmdHis'))); +$consolidationId = null; +if (is_int($ret) ) { + $consolidationId = $ret; +} +echo date ('Y/m/d - H:i:s')." - Sphinx Idx id=".$consolidationId.EOL; + +if (!$iDb->query("DROP TABLE IF EXISTS jo.etablissements_tmp;")) + die($iDb->getLastError()); + +if (!$iDb->query("CREATE TABLE jo.etablissements_tmp ( + id bigint(20) NOT NULL auto_increment COMMENT 'Identifiant dans la table (pas unique pour l''établissement)', + source tinyint(3) unsigned zerofill NOT NULL COMMENT 'Code source de l''entité/établissement', + source_id bigint(20) unsigned NOT NULL COMMENT 'Identifiant de l''établissement/entité dans la source (source+source_id étant invariable=identifiant S&D)', + triCode varchar(6) NOT NULL COMMENT 'Code Tribunal de l''entreprise', + autre_id varchar(15) NOT NULL COMMENT 'Autre identifiant comme Numéro RCS, Waldec/RNA', + siren INT(9) unsigned zerofill NOT NULL COMMENT 'SIREN de l''entreprise', + nic mediumint(5) unsigned zerofill NOT NULL COMMENT 'NIC de l''établissement (SIREN+NIC=SIRET)', + actif tinyint(1) unsigned NOT NULL COMMENT 'Etablissement actif ou inactif (1=actif, 0=inactif)', + siege tinyint(1) unsigned NOT NULL COMMENT 'Type d''établissement (0=Secondaire, 1=Siège, 2=Principal)', + raisonSociale varchar(160) NOT NULL COMMENT 'Raison Sociale de l''entreprise', + enseigne varchar(200) NOT NULL COMMENT 'Enseigne de l''établissement', + sigle varchar(20) NOT NULL COMMENT 'Sigle de l''entreprise', + identite_pre TEXT NOT NULL COMMENT 'Liste des Raisons Sociales précédentes de l''entreprise', + marques TEXT NOT NULL COMMENT 'Liste des marques déposées sur le SIREN', + adr_num SMALLINT(4) UNSIGNED ZEROFILL NOT NULL, + adr_btq CHAR(1) NOT NULL, + adr_typeVoie CHAR(4) NOT NULL, + adr_libVoie VARCHAR(32) NOT NULL, + adr_comp VARCHAR(38) NOT NULL, + adr_cp mediumint(5) UNSIGNED ZEROFILL NOT NULL, + adr_ville VARCHAR(32) NOT NULL, + adr_dep CHAR(3) NOT NULL, + adr_com SMALLINT(3) UNSIGNED ZEROFILL NOT NULL, + rivoli CHAR(5) NOT NULL, + tel bigint(10) UNSIGNED ZEROFILL NOT NULL, + fax bigint(10) UNSIGNED ZEROFILL NOT NULL, + cj SMALLINT(4) UNSIGNED ZEROFILL NOT NULL, + capital bigint(15) UNSIGNED ZEROFILL NOT NULL, + capitalDev CHAR(3) NOT NULL, + capitalSrc TINYINT(3) UNSIGNED ZEROFILL NOT NULL, + ape_etab CHAR(5) NOT NULL, + ape_entrep CHAR(5) NOT NULL, + age_entrep TINYINT(3) UNSIGNED NOT NULL, + age_etab TINYINT(3) UNSIGNED NOT NULL, + tca TINYINT(1) UNSIGNED ZEROFILL NULL COMMENT 'Tranche de Chiffre d''Affaires (INSEE)', + tcaexp TINYINT(1) UNSIGNED ZEROFILL NOT NULL COMMENT 'Tranche de Chiffre d''Affaires à l''export (INSEE)', + teff_entrep TINYINT(2) UNSIGNED NULL, + teff_etab TINYINT(2) UNSIGNED NULL, + rang SMALLINT(5) UNSIGNED NOT NULL COMMENT 'Nombre de consultation de l''entreprise dans la base S&D', + dateInsert DATETIME NOT NULL, + dateUpdate timestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP, + PRIMARY KEY idxIdSphinx(id), + UNIQUE KEY idxSource (source, source_id), + KEY idxTel(tel), + KEY idxFax(fax), + KEY idxSiret(siren,nic,actif,siege), + KEY idxAutreId(autre_id) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT 'Liste des établissements (Pour la recherche)';", true)) +/** @todo Si la construction de la table est trop longue, faire un ALTER TABLE ... PACK_KEYS=1 à la fin du chargement des données **/ +die($iDb->getLastError()); + +$strMailInfo=date ('Y/m/d - H:i:s')." - Consolidation des établissements.".EOL; +if ($baseInsee) { + /*$dateInsert=date('YmdHis'); + if (!$reset) { + $tabTmp=$iDb->select('etablissements_tmp', 'max(source_id)', 'source=2', true); + $last_id=$tabTmp[0][0]*1; + } else { + $last_id=0; + $iDb->query('DELETE FROM etablissements_tmp WHERE source=2', true); + }*/ + echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis l'Insee.".EOL; + + $retTmp=$iDb->select('insee.identite', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC); + $nbEtab=$retTmp[0]['nbEtab']; + echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab établissements à consolider depuis l'Insee...".EOL; + + /*$iDb->query("INSERT INTO jo.etablissements_tmp SELECT 0 AS id, '2' AS source, id AS source_id, '' AS triCode, NUMRC AS autre_id, SIREN AS siren, NIC AS nic, ACTIF%10 as actif, + SIEGE as siege, NOM as raisonSociale, ENSEIGNE AS enseigne, SIGLE AS sigle, CONCAT(IDENTITE_PRE, ' ',NOM2) AS identite_pre, '' AS marques, ADR_NUMVOIE as adr_num, + ADR_BTQ as adr_btq, ADR_TYPVOIE as adr_typevoie, ADR_LIBVOIE as adr_libvoie, ADR_COMP as adr_comp, + ADR_CP as adr_cp, ADR_LIBCOM as adr_ville, IF(ADR_DEP=97 OR ADR_DEP=98, SUBSTRING(ADR_CP,1,3), ADR_DEP) AS adr_dep, + TEL as tel, FAX as fax, CJ as cj, APE_ETAB as ape_etab, APE_ENT as apen_entrep, 0 as rank, DATE_MAJ as dateInsert, + 0 as dateUpdate FROM insee.identite"); + +/* +' ',REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(e.sigle,'@','A'), '&',' ET '),'/',''),',',''),'-',''),'.',''), +' ',REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(i.SIGLE,'@','A'), '&',' ET '),'/',''),',',''),'-',''),'.',''), +' ',REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(e.sigle,' ',''),'@','A'), '&',' ET '),'/',''),',',''),'-',''),'.',''), +' ',REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(i.SIGLE,' ',''),'@','A'), '&',' ET '),'/',''),',',''),'-',''),'.',''), +' ',REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(i.NOM,'@','A'), '&',' ET '),'/',''),',',''),'-',''),'.',''), +' ',REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(e.raisonSociale,'@','A'), '&',' ET '),'/',''),',',''),'-',''),'.',''), +' ',REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(ENSEIGNE,'@','A'), '&',' ET '),'/',''),',',''),'-',''),'.','') + */ + $iDb->query("INSERT INTO jo.etablissements_tmp SELECT 0 AS id, '2' AS source, id AS source_id, e.triCode AS triCode, IF(e.numRC2 IS NOT NULL OR e.numRC2<>'', e.numRC2, i.NUMRC) AS autre_id, i.SIREN AS siren, i.NIC AS nic, i.ACTIF%10 as actif, + SIEGE as siege, IF(LENGTH(i.NOMEN_LONG)>0, i.NOMEN_LONG, i.NOM) AS raisonSociale, i.ENSEIGNE AS enseigne, i.SIGLE AS sigle, TRIM(CONCAT_WS(' ',i.IDENTITE_PRE,i.NOM,i.NOM2,e.raisonSociale,e.sigle,i.NOMEN_LONG,i.NOM_COM)) AS identite_pre, '' AS marques, ADR_NUMVOIE as adr_num, + ADR_BTQ as adr_btq, ADR_TYPVOIE as adr_typevoie, ADR_LIBVOIE as adr_libvoie, ADR_COMP as adr_comp, + ADR_CP as adr_cp, ADR_LIBCOM as adr_ville, IF(ADR_DEP=97 OR ADR_DEP=98, SUBSTRING(ADR_CP,1,3), ADR_DEP) AS adr_dep, ADR_COM as adr_com, CODEVOIE AS rivoli, + TEL as tel, FAX as fax, i.CJ as cj, IF(e.capitalMontant IS NOT NULL OR e.capitalMontant>0, e.capitalMontant, i.CAPITAL) AS capital, IF(e.capitalDevIso IS NOT NULL OR e.capitalDevIso<>'', e.capitalDevIso, i.CAPITAL_DEV) AS capitalDev, IF(e.capitalMontant IS NOT NULL OR e.capitalMontant>0, 5, 2) AS capitalSrc, APE_ETAB as ape_etab, APE_ENT as apen_entrep, YEAR(NOW())-YEAR(DCREN) as age_entrep, YEAR(NOW())-YEAR(DCRET) as age_etab, + TCA as tca, TCAEXP as tcaexp, IF(TEFF_ENT='NN', NULL, TEFF_ENT*1) AS teff_entrep, IF(TEFF_ET='NN', NULL, TEFF_ET*1) AS teff_etab, + 0 as rank, DATE_MAJ as dateInsert, + 0 as dateUpdate FROM insee.identite i LEFT JOIN jo.rncs_entrep e ON i.siren=e.siren"); + $retTmp=$iDb->select('jo.etablissements_tmp', 'COUNT(*) AS nbEtab', '1', false,MYSQL_ASSOC); + $nbEtab=$retTmp[0]['nbEtab']; + echo date ('Y/m/d - H:i:s')." - Il y a $nbEtab établissements Insee consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbEtab établissements Insee consolidés.".EOL; +} + +if ($baseInpi) { + $last_id=0; + // include ... + //$iGeffes=new MGreffes(); + echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis le RNCS entreprises.".EOL; + + $dateInsert=date('YmdHis'); + + //$nbBodS=$iDb->select('rncs_entrep r','r.siren, r.sirenValide, r.actif AS actifEnt, r.triCode, r.triId, r.numGreffe, r.numRC2, r.raisonSociale, r.sigle, r.naf, r.cj, r.capitalMontant, r.capitalDevIso, r.dateImma, r.dateRad, r.capitalType, r.provisoires, r.flux', 'r.siren NOT IN (SELECT distinct siren FROM etablissements)', false,MYSQL_ASSOC,true); + + $nbBodS=$iDb->select('rncs_entrep g LEFT JOIN etablissements_tmp e ON g.siren = e.siren', + 'g.siren, g.raisonSociale, g.nom, g.prenom, g.nomUsage, g.sigle, g.naf, g.cj, g.capitalMontant, g.capitalDevIso, g.dateImma, g.dateRad, g.dateFer, g.numGreffe, g.actif, g.triCode, g.numRC2, g.dateInsert', + "e.siren IS NULL", false,MYSQL_ASSOC,true); + + echo date ('Y/m/d - H:i:s')." - Il y a $nbBodS entreprises en provenance du RNCS dont le siren est absent de l'insee à consolider depuis $last_id...".EOL; + + while ($tabEntrep=$iDb->fetch(MYSQL_ASSOC)) { + $siren=$tabEntrep['siren']; + $ret1=$iDb2->select('rncs_etab', 'id, siren, nic, siege, actif, enseigne, nomCommercial, adrNumVoie, adrIndRep, adrLibVoie, adrTypeVoie, adrVoie, cp, commune, adrComp, naf, dateFermeture, flux', "siren=$siren", false, MYSQL_ASSOC); + + $ret2=$iDb2->select('rncs_etab_prov', 'id, siren, nic, siege, actif, enseigne, nomCommercial, adrNumVoie, adrIndRep, adrLibVoie, adrTypeVoie, adrVoie, cp, commune, adrComp, naf, dateFermeture, flux', "siren=$siren", false, MYSQL_ASSOC); + + $ret=@array_merge($ret1, $ret2); + foreach ($ret as $tabEt) { + $actif=$tabEt['actif']; + if ($tabEntrep['actif']==0) $actif=0; + $dep=floor($tabEt['cp']/1000); + if ($dep>96) $dep=floor($tabEt['cp']/100); + $tabEtab=array( 'source'=>5, + 'source_id'=>$tabEt['id'], + 'siren'=>$tabEntrep['siren'], + 'nic'=>$tabEt['nic'], + 'triCode'=>$tabEntrep['triCode'], + 'autre_id'=>$tabEntrep['numRC2'], + 'siege'=>$tabEt['siege'], + 'actif'=>$actif, + 'raisonSociale'=>$tabEntrep['raisonSociale'], + 'enseigne'=>$tabEt['enseigne'], + 'sigle'=>$tabEntrep['sigle'], + 'identite_pre'=>$tabEt['nomCommercial'], + 'adr_num'=>$tabEt['adrNumVoie'],// , , , cp, commune, , + 'adr_btq'=>$tabEt['adrIndRep'], + 'adr_typeVoie'=>$tabEt['adrTypeVoie'], + 'adr_libVoie'=>$tabEt['adrVoie'], + 'adr_comp'=>$tabEt['adrComp'], + 'adr_cp'=>$tabEt['cp'], + 'adr_ville'=>$tabEt['commune'], + 'adr_dep'=>$dep, + // 'adr_com'=> + // 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']); + 'tel'=>'', + 'fax'=>'', + 'cj'=>$tabEntrep['cj'], + 'capital'=>$tabEntrep['capitalMontant'], + 'capitalDev'=>$tabEntrep['capitalDevIso'], + 'capitalSrc'=>5, + 'ape_etab'=>$tabEt['naf'], + 'ape_entrep'=>$tabEntrep['naf'], + 'dateInsert'=>$dateInsert, + ); + + $ret=$iDb->insert('etablissements_tmp',$tabEtab); + if (!$ret && mysql_errno()<>1062) { + echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations RNCS sur le siren ". $tabEntrep['siren'] .' : '. $tabEntrep['raisonSociale'] .' ('. $tabEt['id'].') !'.EOL; + echo date ('Y/m/d - H:i:s'). mysql_error(); + } else + $nbInsertRncs1++; + } + } + echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertRncs1 entreprises/établissements RNCS consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertRncs1 entreprises/établissements RNCS consolidés.".EOL; + + + $dateInsert=date('YmdHis'); + echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis le RNCS établissements.".EOL; + + $nbBodS=$iDb->select('rncs_etab g LEFT JOIN etablissements_tmp e ON g.siren=e.siren AND g.nic = e.nic', + 'g.id, g.siren, g.nic, g.siege, g.actif, g.enseigne, g.nomCommercial, g.adrNumVoie, g.adrIndRep, g.adrLibVoie, g.adrTypeVoie, g.adrVoie, g.cp, g.commune, g.adrComp, g.adresse1, g.adresse2, g.adresse3, g.naf, g.dateFermeture, g.flux, g.dateInsert', + "e.nic IS NULL", false,MYSQL_ASSOC,true); + + echo date ('Y/m/d - H:i:s')." - Il y a $nbBodS établissements en provenance du RNCS dont le siret est absent de l'insee à consolider depuis $last_id...".EOL; + + while ($tabEt=$iDb->fetch(MYSQL_ASSOC)) { + $siren=$tabEt['siren']; + + $ret=$iDb2->select('rncs_entrep', 'siren, actif, numGreffe, triCode, triId, numRC2, raisonSociale, nom, prenom, nomUsage, sigle, dateNaiss, lieuNaiss, sexe, nationalite, pays, naf, cj, capitalMontant, capitalDevise, capitalDevIso, dateImma, dateRad, dateFer, capitalType, capitalCent, provisoires, flux, dateInsert', "siren=$siren", false, MYSQL_ASSOC); + $tabEntrep=$ret[0]; + + $actif=$tabEt['actif']; + if ($tabEntrep['actif']==0) $actif=0; + + $dep=floor($tabEt['cp']/1000); + if ($dep>96) $dep=floor($tabEt['cp']/100); + $tabEtab=array( 'source'=>5, + 'source_id'=>$tabEt['id'], + 'siren'=>$siren, + 'nic'=>$tabEt['nic'], + 'triCode'=>$tabEntrep['triCode'], + 'autre_id'=>$tabEntrep['numRC2'], + 'siege'=>$tabEt['siege'], + 'actif'=>$actif, + 'raisonSociale'=>$tabEntrep['raisonSociale'], + 'enseigne'=>$tabEt['enseigne'], + 'sigle'=>$tabEntrep['sigle'], + 'identite_pre'=>$tabEt['nomCommercial'], + 'adr_num'=>$tabEt['adrNumVoie'], + 'adr_btq'=>$tabEt['adrIndRep'], + 'adr_typeVoie'=>$tabEt['adrTypeVoie'], + 'adr_libVoie'=>$tabEt['adrVoie'], + 'adr_comp'=>$tabEt['adrComp'], + 'adr_cp'=>$tabEt['cp'], + 'adr_ville'=>$tabEt['commune'], + 'adr_dep'=>$dep, + // 'adr_com'=> + // 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']); + 'tel'=>'', + 'fax'=>'', + 'cj'=>$tabEntrep['cj'], + 'capital'=>$tabEntrep['capitalMontant'], + 'capitalDev'=>$tabEntrep['capitalDevIso'], + 'capitalSrc'=>5, + 'ape_etab'=>$tabEt['naf'], + 'ape_entrep'=>$tabEntrep['naf'], + 'dateInsert'=>$dateInsert, + ); + + $ret=$iDb->insert('etablissements_tmp',$tabEtab); + if (!$ret && mysql_errno()<>1062) { + echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations RNCS sur le siren ". $tabEntrep['siren'] .' : '. $tabEntrep['raisonSociale'] .' ('. $tabEt['id'].') !'.EOL; + echo date ('Y/m/d - H:i:s'). mysql_error(); + } else + $nbInsertRncs2++; + } + echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertRncs2 établissements RNCS consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertRncs2 établissements RNCS consolidés.".EOL; +} + + +if ($joBodacc) { + echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis le Bodacc.".EOL; + + $dateInsert=date('YmdHis'); +/* if (!$reset) { + $tabTmp=$iDb->select('etablissements', 'max(source_id)', 'source=1', true); + $last_id=$tabTmp[0][0]*1; + } else*/ $last_id=0; + //$nbBodS=$iDb->select('bodacc_detail d LEFT JOIN etablissements_tmp e ON d.siren = e.siren', 'd.id, d.typeEven, d.siren, d.nic, d.Bodacc_Date_Parution, d.Tribunal_Code, d.Rubrique_Bodacc, d.Rubrique, d.typeAnnonce, d.RC, d.raisonSociale, d.nomCommercial, d.sigle, d.enseigne, d.FJ, d.Capital, d.CapitalDev, d.adrSiegeNum, d.adrSiegeIndRep, d.adrSiegeTypVoie, d.adrSiegeLibVoie, d.adrSiegeComp1, d.adrSiegeComp2, d.codePostalSiege, d.villeSiege, d.adrNum, d.adrIndRep, d.adrTypVoie, d.adrLibVoie, d.adrComp1, d.adrComp2, d.codePostal, d.ville, d.activite', "d.siren>1000 AND e.siren IS NULL", false,MYSQL_ASSOC,true); + $nbBodS=$iDb->select('bodacc_detail d LEFT JOIN etablissements_tmp e ON d.siren = e.siren', 'd.id, d.typeEven, d.siren, d.nic, d.Bodacc_Date_Parution, d.Tribunal_Code, d.Rubrique_Bodacc, d.Rubrique, d.typeAnnonce, d.RC, d.raisonSociale, d.nomCommercial, d.sigle, d.enseigne, d.FJ, d.Capital, d.CapitalDev, d.adrSiegeNum, d.adrSiegeIndRep, d.adrSiegeTypVoie, d.adrSiegeLibVoie, d.adrSiegeComp1, d.adrSiegeComp2, d.codePostalSiege, d.villeSiege, d.adrNum, d.adrIndRep, d.adrTypVoie, d.adrLibVoie, d.adrComp1, d.adrComp2, d.codePostal, d.ville, d.activite', "d.siren>1000 AND e.siren IS NULL AND d.dateSuppr=0", false,MYSQL_ASSOC,true); + echo date ('Y/m/d - H:i:s')." - Il y a $nbBodS annonces BODACC dont le siren est absent de l'insee à consolider depuis $last_id...".EOL; + + while ($tabBodacc=$iDb->fetch(MYSQL_ASSOC)) { + // Si le siren n'existe pas dans la base etablissement, on l'ajoute + $cj=$naf=''; + $dep=floor($tabBodacc['codePostalSiege']/1000); + if ($dep>96) $dep=floor($tabBodacc['codePostalSiege']/100); + + $actif=1; + $tabEven=explode(';',$tabBodacc['typeEven']); + foreach ($tabEven as $even) { + $typeEven=$even*1; + if ($typeEven>=6000 && $typeEven<=6700) $actif=0; + elseif ($typeEven==2000 || $typeEven==2206) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven==2720) $actif=0; + } + + if (trim(@$tabBodacc['adresseSiege'])<>'') { + $siege=1; + $adr_num=$tabBodacc['adrSiegeNum']; + $adr_btq=$tabBodacc['adrSiegeIndRep']; + $adr_typeVoie=$tabBodacc['adrSiegeTypVoie']; + $adr_libVoie=$tabBodacc['adrSiegeLibVoie']; + $adr_comp=trim(strtoupper($tabBodacc['adrSiegeComp1'].' '.$tabBodacc['adrSiegeComp2'])); + $adr_cp=$tabBodacc['codePostalSiege']; + $adr_ville=strtoupper(trim(strtr($tabBodacc['villeSiege'], '{.!}',' '))); + } else { + $siege=0; + $adr_num=$tabBodacc['adrNum']; + $adr_btq=$tabBodacc['adrIndRep']; + $adr_typeVoie=$tabBodacc['adrTypVoie']; + $adr_libVoie=$tabBodacc['adrLibVoie']; + $adr_comp=trim(strtoupper($tabBodacc['adrComp1'].' '.$tabBodacc['adrComp2'])); + $adr_cp=$tabBodacc['codePostal']; + $adr_ville=strtoupper(trim(strtr($tabBodacc['ville'], '{.!}',' '))); + } + + $matches1=$matches2=array(); + $raisonSociale=trim($tabBodacc['raisonSociale']); + if (preg_match("/ Nom d'usage (.*)/i", $raisonSociale, $matches1)) + $raisonSociale=trim(preg_replace("/ Nom d'usage .*/i", '', $raisonSociale)); + if (preg_match("/ Pseudonyme (.*)/i", $raisonSociale, $matches2)) + $raisonSociale=trim(preg_replace("/ Pseudonyme .*/i", '', $raisonSociale)); + + if (preg_match("/^S E L A R L /i", $raisonSociale) || preg_match("/ S E L A R L$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S E L A R L','SELARL',$raisonSociale)); + elseif (preg_match("/^S A R L /i", $raisonSociale) || preg_match("/ S A R L$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S A R L','SARL',$raisonSociale)); + elseif (preg_match("/^S A S /i", $raisonSociale) || preg_match("/ S A S$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S A S','SAS',$raisonSociale)); + elseif (preg_match("/^S C I /i", $raisonSociale) || preg_match("/ S C I$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S A S','SAS',$raisonSociale)); + elseif (preg_match("/^S C P /i", $raisonSociale) || preg_match("/ S C P$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S C P','SCP',$raisonSociale)); + elseif (preg_match("/^S N C /i", $raisonSociale) || preg_match("/ S N C$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S N C','SNC',$raisonSociale)); + elseif (preg_match("/^S A /i", $raisonSociale) || preg_match("/ S A$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S A','SA',$raisonSociale)); + elseif (preg_match("/^S C E A /i", $raisonSociale) || preg_match("/ S C E A$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S C E A','SCEA',$raisonSociale)); + elseif (preg_match("/^S C A /i", $raisonSociale) || preg_match("/ S C A$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S C A','SCA',$raisonSociale)); + elseif (preg_match("/^S C /i", $raisonSociale) || preg_match("/ S C$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S C','SC',$raisonSociale)); + elseif (preg_match("/^E A R L /i", $raisonSociale) || preg_match("/ E A R L$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('E A R L','EARL',$raisonSociale)); + elseif (preg_match("/^E A R /i", $raisonSociale) || preg_match("/ E A R$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('E A R','EAR',$raisonSociale)); + elseif (preg_match("/^E A /i", $raisonSociale) || preg_match("/ E A$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('E A','EA',$raisonSociale)); + elseif (preg_match("/^E U R L /i", $raisonSociale) || preg_match("/ E U R L$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('E U R L','EURL',$raisonSociale)); + + $raisonSociale=trim(preg_replace("/ +/",' ', strtr(' '.strtoupper($raisonSociale).' ', array(' DENOMINATION '=>' ', ' SUCCESSION '=>' ')))); + + $identitePre=trim(@$matches1[1].' '.@$matches1[2]); + $dep=floor($adr_cp/1000); + if ($dep>96) $dep=floor($adr_cp/100); + + $tabEtab=array( 'source'=>1, + 'source_id'=>$tabBodacc['id'], + 'siren'=>$tabBodacc['siren'], + 'nic'=>$tabBodacc['nic'], + 'triCode'=>$tabBodacc['Tribunal_Code'], + 'autre_id'=>$tabBodacc['RC'], + 'siege'=>$siege, + 'actif'=>$actif, + 'raisonSociale'=>$raisonSociale, + 'enseigne'=>$tabBodacc['enseigne'], + 'sigle'=>$tabBodacc['sigle'], + 'identite_pre'=>$identitePre, + 'adr_num'=>$adr_num, + 'adr_btq'=>$adr_btq, + 'adr_typeVoie'=>$adr_typeVoie, + 'adr_libVoie'=>$adr_libVoie, + 'adr_comp'=>$adr_comp, + 'adr_cp'=>$adr_cp, + 'adr_ville'=>$adr_ville, + 'adr_dep'=>$dep, + // 'adr_com'=> + // 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']); + 'tel'=>'', + 'fax'=>'', + 'cj'=>$cj, + 'capital'=>$tabBodacc['Capital'], + 'capitalDev'=>$tabBodacc['CapitalDev'], + 'capitalSrc'=>1, + 'ape_etab'=>$naf, + 'ape_entrep'=>$naf, + 'dateInsert'=>$dateInsert, + ); + + $ret=$iDb->insert('etablissements_tmp',$tabEtab); + if (!$ret && mysql_errno()<>1062) { + echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations BODACC sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL; + echo date ('Y/m/d - H:i:s'). mysql_error(); + } else + $nbInsertBod++; + } + echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertBod établissements Bodacc consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertBod établissements Bodacc consolidés.".EOL; + + + $dateInsert=date('YmdHis'); +/* if (!$reset) { + $tabTmp=$iDb->select('etablissements', 'max(source_id)', 'source=1', true); + $last_id=$tabTmp[0][0]*1; + } else*/ $last_id=0; + //$nbBodS=$iDb->select('bodacc_detail d', 'd.id, d.typeEven, d.siren, d.sirenValide, d.nic, d.Bodacc_Date_Parution, d.Tribunal_Code, d.Rubrique_Bodacc, d.Rubrique, d.typeAnnonce, d.RC, d.raisonSociale, d.nomCommercial, d.sigle, d.enseigne, d.FJ, d.Capital, d.CapitalDev, d.adrSiegeNum, d.adrSiegeIndRep, d.adrSiegeTypVoie, d.adrSiegeLibVoie, d.adrSiegeComp1, d.adrSiegeComp2, d.codePostalSiege, d.villeSiege, d.adrNum, d.adrIndRep, d.adrTypVoie, d.adrLibVoie, d.adrComp1, d.adrComp2, d.codePostal, d.ville, d.activite', "d.siren<=1000", false,MYSQL_ASSOC,true); + $nbBodS=$iDb->select('bodacc_detail d', 'd.id, d.typeEven, d.siren, d.sirenValide, d.nic, d.Bodacc_Date_Parution, d.Tribunal_Code, d.Rubrique_Bodacc, d.Rubrique, d.typeAnnonce, d.RC, d.raisonSociale, d.nomCommercial, d.sigle, d.enseigne, d.FJ, d.Capital, d.CapitalDev, d.adrSiegeNum, d.adrSiegeIndRep, d.adrSiegeTypVoie, d.adrSiegeLibVoie, d.adrSiegeComp1, d.adrSiegeComp2, d.codePostalSiege, d.villeSiege, d.adrNum, d.adrIndRep, d.adrTypVoie, d.adrLibVoie, d.adrComp1, d.adrComp2, d.codePostal, d.ville, d.activite', "d.siren<=1000 AND d.dateSuppr=0", false,MYSQL_ASSOC,true); + echo date ('Y/m/d - H:i:s')." - Il y a $nbBodS annonces BODACC non sirenées à consolider depuis $last_id...".EOL; + + while ($tabBodacc=$iDb->fetch(MYSQL_ASSOC)) { + //if ($tabBodacc['siren']<>0) + // $ret=$iDb2->select('etablissements_tmp', 'count(*)', 'SIREN='.$tabBodacc['siren']); + + // Si le siren n'existe pas dans la base etablissement, on l'ajoute + $cj=$naf=''; + $dep=floor($tabBodacc['codePostalSiege']/1000); + if ($dep>96) $dep=floor($tabBodacc['codePostalSiege']/100); + + $actif=1; + $tabEven=explode(';',$tabBodacc['typeEven']); + foreach ($tabEven as $even) { + $typeEven=$even*1; + if ($typeEven>=6000 && $typeEven<=6700) $actif=0; + elseif ($typeEven==2000 || $typeEven==2206) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven==2720) $actif=0; + } + + if (@$tabBodacc['adresseSiege']<>'') { + $siege=1; + $adr_num=$tabBodacc['adrSiegeNum']; + $adr_btq=$tabBodacc['adrSiegeIndRep']; + $adr_typeVoie=$tabBodacc['adrSiegeTypVoie']; + $adr_libVoie=$tabBodacc['adrSiegeLibVoie']; + $adr_comp=trim(strtoupper($tabBodacc['adrSiegeComp1'].' '.$tabBodacc['adrSiegeComp2'])); + $adr_cp=$tabBodacc['codePostalSiege']; + $adr_ville=strtoupper(trim(strtr($tabBodacc['villeSiege'], '{.!}',' '))); + } else { + $siege=0; + $adr_num=$tabBodacc['adrNum']; + $adr_btq=$tabBodacc['adrIndRep']; + $adr_typeVoie=$tabBodacc['adrTypVoie']; + $adr_libVoie=$tabBodacc['adrLibVoie']; + $adr_comp=trim(strtoupper($tabBodacc['adrComp1'].' '.$tabBodacc['adrComp2'])); + $adr_cp=$tabBodacc['codePostal']; + $adr_ville=strtoupper(trim(strtr($tabBodacc['ville'], '{.!}',' '))); + } + /** Suppression des Noms d'usage et Pseudonymes dans la raison sociale **/ + $matches1=$matches2=array(); + $raisonSociale=trim($tabBodacc['raisonSociale']); + if (preg_match("/ Nom d'usage (.*)/i", $raisonSociale, $matches1)) + $raisonSociale=trim(preg_replace("/ Nom d'usage .*/i", '', $raisonSociale)); + if (preg_match("/ Pseudonyme (.*)/i", $raisonSociale, $matches2)) + $raisonSociale=trim(preg_replace("/ Pseudonyme .*/i", '', $raisonSociale)); + + if (preg_match("/^S E L A R L /i", $raisonSociale) || preg_match("/ S E L A R L$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S E L A R L','SELARL',$raisonSociale)); + elseif (preg_match("/^S A R L /i", $raisonSociale) || preg_match("/ S A R L$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S A R L','SARL',$raisonSociale)); + elseif (preg_match("/^S A S /i", $raisonSociale) || preg_match("/ S A S$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S A S','SAS',$raisonSociale)); + elseif (preg_match("/^S C I /i", $raisonSociale) || preg_match("/ S C I$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S A S','SAS',$raisonSociale)); + elseif (preg_match("/^S C P /i", $raisonSociale) || preg_match("/ S C P$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S C P','SCP',$raisonSociale)); + elseif (preg_match("/^S N C /i", $raisonSociale) || preg_match("/ S N C$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S N C','SNC',$raisonSociale)); + elseif (preg_match("/^S A /i", $raisonSociale) || preg_match("/ S A$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S A','SA',$raisonSociale)); + elseif (preg_match("/^S C E A /i", $raisonSociale) || preg_match("/ S C E A$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S C E A','SCEA',$raisonSociale)); + elseif (preg_match("/^S C A /i", $raisonSociale) || preg_match("/ S C A$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S C A','SCA',$raisonSociale)); + elseif (preg_match("/^S C /i", $raisonSociale) || preg_match("/ S C$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('S C','SC',$raisonSociale)); + elseif (preg_match("/^E A R L /i", $raisonSociale) || preg_match("/ E A R L$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('E A R L','EARL',$raisonSociale)); + elseif (preg_match("/^E A R /i", $raisonSociale) || preg_match("/ E A R$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('E A R','EAR',$raisonSociale)); + elseif (preg_match("/^E A /i", $raisonSociale) || preg_match("/ E A$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('E A','EA',$raisonSociale)); + elseif (preg_match("/^E U R L /i", $raisonSociale) || preg_match("/ E U R L$/i", $raisonSociale)) + $raisonSociale=trim(str_replace('E U R L','EURL',$raisonSociale)); + + $raisonSociale=trim(preg_replace("/ +/",' ', strtr(' '.strtoupper($raisonSociale).' ', array(' DENOMINATION '=>' ', ' SUCCESSION '=>' ')))); + + $identitePre=trim(@$matches1[1].' '.@$matches1[2]); + + $dep=floor($adr_cp/1000); + if ($dep>96) $dep=floor($adr_cp/100); + + $tabEtab=array( 'source'=>1, + 'source_id'=>$tabBodacc['id'], + 'siren'=>$tabBodacc['siren'], + 'nic'=>$tabBodacc['nic'], + 'triCode'=>$tabBodacc['Tribunal_Code'], + 'autre_id'=>$tabBodacc['RC'], + 'siege'=>$siege, + 'actif'=>$actif, + 'raisonSociale'=>$raisonSociale, + 'enseigne'=>$tabBodacc['enseigne'], + 'sigle'=>$tabBodacc['sigle'], + 'identite_pre'=>$identitePre, + 'adr_num'=>$adr_num, + 'adr_btq'=>$adr_btq, + 'adr_typeVoie'=>$adr_typeVoie, + 'adr_libVoie'=>$adr_libVoie, + 'adr_comp'=>$adr_comp, + 'adr_cp'=>$adr_cp, + 'adr_ville'=>$adr_ville, + 'adr_dep'=>$dep, + // 'adr_com'=> + // 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']); + 'tel'=>'', + 'fax'=>'', + 'cj'=>$cj, + 'capital'=>$tabBodacc['Capital'], + 'capitalDev'=>$tabBodacc['CapitalDev'], + 'capitalSrc'=>1, + 'ape_etab'=>$naf, + 'ape_entrep'=>$naf, + 'dateInsert'=>$dateInsert, + ); + + if ($tabBodacc['sirenValide']==9) { + //$conjoint=$iDb2->select('bodacc_detail', 'siren', 'id='.$tabBodacc['id']." AND typeEven='".$tabBodacc['typeEven']."' AND siren>=1000", false, MYSQL_ASSOC); + $conjoint=$iDb2->select('bodacc_detail', 'siren', 'id='.$tabBodacc['id']." AND typeEven='".$tabBodacc['typeEven']."' AND siren>=1000 AND dateSuppr=0", false, MYSQL_ASSOC); + if (is_array($conjoint) && count($conjoint)==1) { + $ret=$iDb2->select('etablissements_tmp','identite_pre', 'siren='.$conjoint[0]['siren'], false, MYSQL_ASSOC); + if (isset($ret[0])) { + $tabUpdate=array( 'identite_pre'=>$ret[0]['identite_pre'].' '.$raisonSociale); + $ret=$iDb->update('etablissements_tmp',$tabUpdate, 'siren='.$conjoint[0]['siren']); + $nbConjoints++; + continue; + } + } + } + $ret=$iDb->insert('etablissements_tmp',$tabEtab); + if (!$ret && mysql_errno()<>1062) { + echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations BODACC sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL; + echo date ('Y/m/d - H:i:s'). mysql_error(); + } else + $nbInsertBodNS++; + } + echo date ('Y/m/d - H:i:s')." - Il y a $nbConjoints conjoints Bodacc consolidés.".EOL; + echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertBodNS établissements Bodacc NS consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbConjoints conjoints Bodacc consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertBodNS établissements Bodacc NS consolidés.".EOL; + +/* + $dateInsert=date('YmdHis'); + if (!$reset) { + $tabTmp=$iDb->select('etablissements', 'max(source_id)', 'source=1 AND siege=0', true); + $last_id=$tabTmp[0][0]*1; + } else $last_id=0; + $nbBodE=$iDb->select('bodacc_detail', 'id, typeEven, siren, nic, Bodacc_Date_Parution, Tribunal_Code, Rubrique_Bodacc, Rubrique, typeAnnonce, RC, raisonSociale, nomCommercial, enseigne, FJ, Capital, CapitalDev, adrNum, adrIndRep, adrTypVoie, adrLibVoie, adrComp1, adrComp2, codePostal, ville, activite', "adresse<>'' AND id>$last_id", false,MYSQL_ASSOC,true); + // + echo date ('Y/m/d - H:i:s')." - Il y a $nbBodE annonces BODACC établissement à consolider depuis $last_id...".EOL; + + while ($tabBodacc=$iDb->fetch(MYSQL_ASSOC)) { + if ($tabBodacc['siren']<>0) + $ret=$iDb2->select('etablissements', 'count(*)', 'SIREN='.$tabBodacc['siren']); + + if ($ret[0][0]==0 || $tabBodacc['siren']==0) { + // Si le siren n'existe pas dans la base etablissement, on l'ajoute + $cj=$naf=''; + $dep=floor($tabBodacc['codePostal']/1000); + if ($dep>96) $dep=floor($tabBodacc['codePostal']/100); + + $actif=1; + $tabEven=explode(';',$tabBodacc['typeEven']); + foreach ($tabEven as $even) { + $typeEven=$even*1; + if ($typeEven>=6000 && $typeEven<=6700) $actif=0; + elseif ($typeEven==2000 || $typeEven==2206) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven>=2200 && $typeEven<=2204) $actif=0; + elseif ($typeEven==2720) $actif=0; + } + + $tabEtab=array( 'source'=>1, + 'source_id'=>$tabBodacc['id'], + 'siren'=>$tabBodacc['siren'], + 'nic'=>$tabBodacc['nic'], + 'triCode'=>$tabBodacc['Tribunal_Code'], + 'autre_id'=>$tabBodacc['RC'], + 'siege'=>0, + 'actif'=>$actif, + 'raisonSociale'=>$tabBodacc['raisonSociale'], + 'enseigne'=>$tabBodacc['enseigne'], + 'sigle'=>'', + 'adr_num'=>$tabBodacc['adrNum'], + 'adr_btq'=>$tabBodacc['adrIndRep'], + 'adr_typeVoie'=>$tabBodacc['adrTypVoie'], + 'adr_libVoie'=>strtoupper($tabBodacc['adrLibVoie']), + 'adr_comp'=>trim(strtoupper($tabBodacc['adrComp1'].' '.$tabBodacc['adrComp2'])), + 'adr_cp'=>$tabBodacc['codePostal'], + 'adr_dep'=>$dep, + 'adr_ville'=>strtoupper(trim(strtr($tabBodacc['ville'], '{.!}',' '))), + 'tel'=>'', + 'fax'=>'', + 'cj'=>$cj, + 'ape_etab'=>$naf, + 'dateInsert'=>$dateInsert, + ); + $iDb->insert('etablissements',$tabEtab); + } + }*/ +} + +if ($joAsso) { + $tabThemes=array(); + $retTmp=$iDb->select('asso_themes', 'theme, naf', "naf<>'' ORDER BY theme ASC", false, MYSQL_ASSOC); + $nbThemes=count($retTmp); + echo date ('Y/m/d - H:i:s')." - Il y a $nbThemes thèmes d'activité associations avec correspondances NAF.".EOL; + foreach ($retTmp as $i=>$tabTmp) + $tabThemes['_'.$tabTmp['theme']]=$tabTmp['naf']; + + echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis le JO Association.".EOL; + $dateInsert=date('YmdHis'); +/* if (!$reset) { + $tabTmp=$iDb->select('etablissements', 'max(source_id)', 'source=3', true); + $last_id=$tabTmp[0][0]*1; + } else*/ $last_id=0; + //$nbAsso=$iDb->select('asso', 'id, Assoc_Nom, siren, nic, Waldec, Activite, codThemes, Type_Annonce, typeAsso, Date_Parution, Departement, Sous_Prefecture, codTribunal, Assoc_Adresse, Assoc_AdrNum, Assoc_AdrIndRep, Assoc_AdrTypVoie, Assoc_AdrLibVoie, Assoc_AdrCP, Assoc_AdrVille, Assoc_AdrComp, Assoc_NAdresse, Assoc_ANom, Assoc_NNom, Assoc_NObjet, Assoc_AObjet, Assoc_Fusion, Assoc_Date_Declaration2, codEven, dateInsert', "id>$last_id AND siren<100", false,MYSQL_ASSOC,true); + $nbAsso=$iDb->select('asso', 'id, Assoc_Nom, siren, nic, Waldec, Activite, codThemes, Type_Annonce, typeAsso, Date_Parution, Departement, Sous_Prefecture, codTribunal, Assoc_Adresse, Assoc_AdrNum, Assoc_AdrIndRep, Assoc_AdrTypVoie, Assoc_AdrLibVoie, Assoc_AdrCP, Assoc_AdrVille, Assoc_AdrComp, Assoc_NAdresse, Assoc_ANom, Assoc_NNom, Assoc_NObjet, Assoc_AObjet, Assoc_Fusion, Assoc_Date_Declaration2, codEven, dateInsert', "id>$last_id AND siren<100 AND dateSuppr=0", false,MYSQL_ASSOC,true); + + echo date ('Y/m/d - H:i:s')." - Il y a $nbAsso annonces ASSOCIATIONS à consolider depuis $last_id...".EOL; + + while ($tabAsso=$iDb->fetch(MYSQL_ASSOC)) { + /* + 9110 Syndicat de copropriété + 9210 Association non déclarée + 9221 Association déclarée "entreprises d'insertion par l'économique" + 9222 Association intermédiaire + 9223 Groupement d'employeurs + 9230 Association déclarée reconnue d'utilité publique + 9240 Congrégation + */ + /** Initialisation des valeurs par défaut + **/ + $naf=''; + $actif=1; + $cj=9220; // Association déclarée +// $tabEven=array(); + if ($tabAsso['typeAsso']=='ASL') { + //if (preg_match('/ASL/i', $tabAsso['Type_Annonce']) || preg_match('/syndicale/i', $tabAsso['Type_Annonce'])) { + $cj=9150; // ASL + $naf='8110Z'; // Activités combinées de soutien lié aux bâtiments + } + elseif ($tabAsso['typeAsso']=='FON') + //elseif (preg_match('/Fondation/i', $tabAsso['Type_Annonce'])) + $cj=9300; // FONDATION + elseif ($tabAsso['typeAsso']=='FOD') { // Fond de dotation + $cj=9900; // Autre personne morale de droit prive + $naf='6832A'; // Administration d'immeubles et autres biens immobiliers + } + elseif ($tabAsso['typeAsso']=='ASS' && (preg_match('/GROUPEMENT.{1,5}EMPLOYEUR/i', $tabAsso['Assoc_Nom']) || + preg_match('/GROUPEMENT.{1,5}EMPLOYEUR/i', $tabAsso['Assoc_ANom']))) { + $cj=9223; // Groupement d'employeur + $naf='7830Z'; // Autre mise à disposition de ressources humaines + } + elseif ($tabAsso['typeAsso']=='ASS' && (preg_match('/ASSOCIATION.{1,5}INTERMEDIAIRE/i', $tabAsso['Assoc_Nom']) || + preg_match('/ASSOCIATION.{1,5}INTERMEDIAIRE/i', $tabAsso['Assoc_ANom']))) { + $cj=9222; // Association intermédiaire + $naf='8810C'; // Aide par le travail + } + elseif ($tabAsso['typeAsso']=='ASS' && ($tabAsso['Departement']==57 || $tabAsso['Departement']==67 || $tabAsso['Departement']==68)) + $cj=9260; // Association de droit local + + if (preg_match('/cr(é|e)ation/i', $tabAsso['Type_Annonce']) && preg_match('/Annulation/i', $tabAsso['Type_Annonce'])) { + $actif=0; +// $tabEven[]=8000; + } + elseif (preg_match('/Dissolution/i', $tabAsso['Type_Annonce']) && !preg_match('/Annulation/i', $tabAsso['Type_Annonce'])) { + $actif=0; +// $tabEven[]=8090; + }/* + elseif (trim($tabAsso['codEven'])=='') { + $tabEven[]=8079; + //, id, Assoc_Nom, siren, nic, Waldec, Activite, codThemes, Type_Annonce, typeAsso, Date_Parution, Departement, Sous_Prefecture, codTribunal, Assoc_Adresse, Assoc_AdrNum, Assoc_AdrIndRep, Assoc_AdrTypVoie, Assoc_AdrLibVoie, Assoc_AdrCP, Assoc_AdrVille, Assoc_AdrComp, Assoc_NAdresse, Assoc_ANom, Assoc_NNom, Assoc_Date_Declaration2, dateInsert', "id>$last_id AND siren<100", false,MYSQL_ASSOC,true); + if (trim($tabAsso['Assoc_ANom'])<>'' || trim($tabAsso['Assoc_NNom'])<>'') + $tabEven[]=8010; // Changement de nom + if (trim($tabAsso['Assoc_NAdresse'])<>'') + $tabEven[]=8011; // Déménagement + if (trim($tabAsso['Assoc_AObjet'])<>'' || trim($tabAsso['Assoc_NObjet'])<>'') + $tabEven[]=8020; // Modification de l'objet social + if (trim($tabAsso['Assoc_Fusion'])<>'') + $tabEven[]=8030; // Fusion + /* + 8021 Additif à l'objet social + 8025 Modification statutaire + 8080 Suspension d'association + * + }*/ + + if ($naf=='') { + if ($tabAsso['codThemes']<>'') { + $tabTmp=@explode(';', $tabAsso['codThemes']); + $naf=@$tabThemes['_'.$tabTmp[0]]; + } + elseif ($tabAsso['Activite']<>'') { + if (preg_match('/sport/i', $tabAsso['Activite'])) // 0015 + $naf='9319Z';//'926C'; // Autres activités sportives + elseif (preg_match('/(culte|religieu)/i', $tabAsso['Activite'])) // 0004 + $naf='9491Z';//913A'; // Organisations religieuses + elseif (preg_match('/communication/i', $tabAsso['Activite'])) // 0003 + $naf='6399Z'; // Autres services d'information n.c.a. + elseif (preg_match('/Politique/i', $tabAsso['Activite'])) // 0012 + $naf='9492Z'; // Activités des organisations politiques + elseif (preg_match('/(Enseignement|Education|formation)/i', $tabAsso['Activite'])) // 0008 + $naf='8559B'; + elseif (preg_match('/(Social|Humanitaire)/i', $tabAsso['Activite']) ) // 0014 + $naf='8899B';//853K'; // Autres formes d'action sociale + elseif (preg_match('/(Recherche|Technique)/i', $tabAsso['Activite'])) // 0010 + $naf='7219Z'; // Recherche-développement en autres sciences physiques et naturelles + elseif (preg_match('/Loisir/i', $tabAsso['Activite'])) // 0005 + $naf='9329Z'; // Autres activités récréatives et de loisirs + elseif (preg_match('/Art/i', $tabAsso['Activite'])) // 0005 + $naf='9003B'; // Autre création artistique + } + } + + if ($naf=='') $naf='9499Z'; // Autres organisations fonctionnant par adhésion volontaire + + /** L'adresse est elle structurée en base ? + **/ + if (trim($tabAsso['Assoc_AdrLibVoie'])<>'' || trim($tabAsso['Assoc_AdrCP'])<>'') { + $adr=array( 'num'=>$tabAsso['Assoc_AdrNum'], + 'indRep'=>$tabAsso['Assoc_AdrIndRep'], + 'typeVoie'=>$tabAsso['Assoc_AdrTypVoie'], + 'libVoie'=>strtoupper($tabAsso['Assoc_AdrLibVoie']), + 'adrComp0'=>$tabAsso['Assoc_AdrComp'], + 'cp'=>$tabAsso['Assoc_AdrCP'], + 'ville'=>trim(strtoupper($tabAsso['Assoc_AdrVille'])), + ); + $updateAdr=false; + } + elseif ($tabAsso['Assoc_NAdresse']<>'') { + $adr=$iInsee->structureVoie($tabAsso['Assoc_NAdresse']); + $updateAdr=true; + } else { + $adr=$iInsee->structureVoie($tabAsso['Assoc_Adresse']); + $updateAdr=true; + } + + if ($updateAdr) { + // On enregistre l'adresse structurée en base + $adrComp=strtoupper(@$adr['adrComp0']); + if (@$adr['adrComp1']<>'') + $adrComp.=' '.strtoupper(@$adr['adrComp1']); + $adr['adrComp0']=$adrComp; + $iDb2->update('asso', array('Assoc_AdrNum'=>@$adr['num'], + 'Assoc_AdrIndRep'=>@$adr['indRep'], + 'Assoc_AdrTypVoie'=>@$adr['typeVoie'], + 'Assoc_AdrLibVoie'=>@$adr['libVoie'], + 'Assoc_AdrComp'=>@$adr['adrComp0'], + 'Assoc_AdrCP'=>@$adr['cp'], + 'Assoc_AdrVille'=>@$adr['ville']), 'id='.$tabAsso['id']); + } + /*if (trim($tabAsso['codEven'])=='' && count($tabEven)>0) { + // On enregistre les codes évènements + $iDb2->update('asso', array('codEven'=>@implode(';', $tabEven)), 'id='.$tabAsso['id']); + }*/ + + $raisonSociale=trim($tabAsso['Assoc_Nom']); + if ($raisonSociale=='') + $raisonSociale=trim($tabAsso['Assoc_ANom']); + + if (preg_match("/^(.*) \((.*)\)$/U", $raisonSociale, $matches)) { + $raisonSociale=trim($matches[1]); + $sigle=trim(strtr($matches[2],array('.'=>''))); + } + else + $sigle=''; + + if ($tabAsso['Departement']*1>0) { + $dep=$tabAsso['Departement']*1; + } else { + $dep=floor(@$adr['cp']/1000); + if ($dep>96) $dep=floor(@$adr['cp']/100); + } + /** Recherche du code tribunal de la préfecture si manquant **/ + $codTribunal=$tabAsso['codTribunal']; + if ($codTribunal=='' && strlen($tabAsso['Sous_Prefecture'])>5) { + $codTribunal=getCodePrefectures($tabAsso['Sous_Prefecture'], $dep); + // On met à jour le tribunal dans la table 'asso' + $iDb2->update('asso', array('codTribunal'=>$codTribunal), 'id='.$tabAsso['id']); + } + $tabEtab=array( 'source'=>3, + 'source_id'=>$tabAsso['id'], + 'siren'=>$tabAsso['siren'], + 'nic'=>$tabAsso['nic'], + 'triCode'=>$codTribunal, + 'autre_id'=>$tabAsso['Waldec'], + 'siege'=>1, + 'actif'=>$actif, + 'raisonSociale'=>$raisonSociale, + 'enseigne'=>'', + 'identite_pre'=>$tabAsso['Assoc_ANom'], + 'sigle'=>$sigle, + 'adr_num'=>@$adr['num'], + 'adr_btq'=>@$adr['indRep'], + 'adr_typeVoie'=>@$adr['typeVoie'], + 'adr_libVoie'=>strtoupper(@$adr['libVoie']), + 'adr_comp'=>@$adr['adrComp0'], + 'adr_cp'=>@$adr['cp'], + 'adr_ville'=>trim(strtoupper(@$adr['ville'])), + 'adr_dep'=>$dep, + // 'adr_com'=> + // 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']); + 'tel'=>'', + 'fax'=>'', + 'cj'=>$cj, + 'capital'=>0, + 'capitalDev'=>'', + 'capitalSrc'=>3, + 'ape_etab'=>$naf, + 'ape_entrep'=>$naf, + 'dateInsert'=>$dateInsert, + ); + $ret=$iDb->insert('etablissements_tmp',$tabEtab); + if (!$ret && mysql_errno()<>1062) { + echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations Associations sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL; + echo date ('Y/m/d - H:i:s'). mysql_error(); + } else + $nbInsertAsso++; + + /** On enregistre l'autre adresse de l'association **/ + if ($tabAsso['Assoc_NAdresse']<>'' && $tabAsso['Assoc_Adresse']<>'') { + $adr=$iInsee->structureVoie($tabAsso['Assoc_Adresse']); + $adrComp=strtoupper(@$adr['adrComp0']); + if (@$adr['adrComp1']<>'') $adrComp.=' '.strtoupper(@$adr['adrComp1']); + $adr['adrComp0']=$adrComp; + $dep=floor(@$adr['cp']/1000); + if ($dep>96) $dep=floor(@$adr['cp']/100); + $tabEtab['source'] = 3; + $tabEtab['adr_num'] = @$adr['num']; + $tabEtab['adr_btq'] = @$adr['indRep']; + $tabEtab['adr_typeVoie']= @$adr['typeVoie']; + $tabEtab['adr_libVoie'] = strtoupper(@$adr['libVoie']); + $tabEtab['adr_comp'] = @$adr['adrComp0']; + $tabEtab['adr_cp'] = @$adr['cp']; + $tabEtab['adr_ville'] = trim(strtoupper(@$adr['ville'])); + $tabEtab['adr_dep'] = $dep; + + $ret=$iDb->insert('etablissements_tmp',$tabEtab); + if (!$ret && mysql_errno()<>1062) { + echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations Associations sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL; + echo date ('Y/m/d - H:i:s'). mysql_error(); + } else { + $nbInsertAsso++; + $nbInsertAssoAdr2++; + } + } + } + echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertAsso établissements Associations consolidés (dont $nbInsertAssoAdr2 suite à déménagement).".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertAsso établissements Associations consolidés (dont $nbInsertAssoAdr2 suite à déménagement).".EOL; + + + echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis le JO Association Sirené (Waldec, etc...)".EOL; + $dateInsert=date('YmdHis'); + $last_id=0; + //$nbAsso=$iDb->select('asso', 'id, Assoc_Nom, siren, nic, Waldec, Activite, Type_Annonce, Date_Parution, Departement, Sous_Prefecture, codTribunal, Assoc_Adresse, Assoc_NAdresse, Assoc_ANom, Assoc_NNom, Assoc_Date_Declaration2, dateInsert', "id>$last_id AND siren>100", false,MYSQL_ASSOC,true); + $nbAsso=$iDb->select('asso', 'id, Assoc_Nom, siren, nic, Waldec, Activite, Type_Annonce, Date_Parution, Departement, Sous_Prefecture, codTribunal, Assoc_Adresse, Assoc_NAdresse, Assoc_ANom, Assoc_NNom, Assoc_Date_Declaration2, dateInsert', "id>$last_id AND siren>100 AND dateSuppr=0", false,MYSQL_ASSOC,true); + + echo date ('Y/m/d - H:i:s')." - Il y a $nbAsso annonces ASSOCIATIONS à mettre à jour depuis $last_id...".EOL; + + while ($tabAsso=$iDb->fetch(MYSQL_ASSOC)) { + $tabEtab=array( 'triCode'=>$tabAsso['Sous_Prefecture'], // Gérer la table des préfecture + 'autre_id'=>$tabAsso['Waldec'], +// 'identite_pre'=>$tabAsso['Assoc_Nom'], + ); + $ret=$iDb->update('etablissements_tmp',$tabEtab, 'siren='.$tabAsso['siren']); + if (!$ret || mysql_errno()<>0) { + echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations Associations sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL; + echo date ('Y/m/d - H:i:s'). mysql_error(); + } else + $nbUpdateAsso++; + } + echo date ('Y/m/d - H:i:s')." - Il y a $nbUpdateAsso établissements Associations avec SIREN consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbUpdateAsso établissements Associations avec SIREN consolidés.".EOL; +} + + +if ($iGreffe) { + $iRncs=new MRncs(); + echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis les Greffes.".EOL; + + $dateInsert=date('YmdHis'); + $nbBodS=$iDb->select('greffes_identite g LEFT JOIN etablissements_tmp e ON g.siren = e.siren', 'g.id, g.siren, g.nom, g.adresse, g.cp, g.ville, g.enseigne, g.siege, g.fj, g.fjLib, g.naf, g.nafLib, g.numGreffe, g.libGreffe, g.numRC, g.dateCreation, g.dateRadiation, g.dateInsert', "e.siren IS NULL", false,MYSQL_ASSOC,true); + + echo date ('Y/m/d - H:i:s')." - Il y a $nbBodS entreprises en provenance des Greffes dont le siren est absent de l'insee à consolider depuis $last_id...".EOL; + + while ($tabBodacc=$iDb->fetch(MYSQL_ASSOC)) { + $adr=$iInsee->structureVoie($tabBodacc['adresse']); + $adr_cp=@$tabBodacc['cp']; + $numRC=$tabBodacc['numRC']; + if ($numRC<>'' && substr($numRC,0,2)*1>=30) + $numRC='19'.$numRC; + elseif ($numRC<>'' && substr($numRC,0,2)*1<30) + $numRC2='20'.$numRC; + + $dep=floor($adr_cp/1000); + if ($dep>96) $dep=floor($adr_cp/100); + + $tabEtab=array( 'source'=>4, + 'source_id'=>$tabBodacc['id'], + 'siren'=>$tabBodacc['siren'], + 'nic'=>0, + 'triCode'=>@$iRncs->getCodeBodaccTribunal($tabBodacc['numGreffe']), + 'autre_id'=>$numRC, + 'siege'=>1, + 'actif'=>0, + 'raisonSociale'=>$tabBodacc['nom'], + 'enseigne'=>$tabBodacc['enseigne'], + 'sigle'=>'', + 'identite_pre'=>'', + 'adr_num'=>@$adr['num'], + 'adr_btq'=>@$adr['adr_btq'], + 'adr_typeVoie'=>@$adr['typeVoie'], + 'adr_libVoie'=>strtoupper(@$adr['libVoie']), + 'adr_comp'=>'', + 'adr_cp'=>$adr_cp, + 'adr_ville'=>strtoupper(@$tabBodacc['ville']), + 'adr_dep'=>$dep, + // 'adr_com'=> + // 'rivoli'=>$iInsee->getCodeVoieRivoli($ligne['insDEPCOM'], $ligne['insTYPVOIE'], $ligne['insLIBVOIE']); + 'tel'=>'', + 'fax'=>'', + 'cj'=>$tabBodacc['fj'], + 'capital'=>0, + 'capitalDev'=>'', + 'capitalSrc'=>4, + 'ape_etab'=>$tabBodacc['naf'], + 'ape_entrep'=>$tabBodacc['naf'], + 'dateInsert'=>$dateInsert, + ); + + $ret=$iDb->insert('etablissements_tmp',$tabEtab); + if (!$ret && mysql_errno()<>1062) { + echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations GREFFES sur le siren ". $tabBodacc['siren'] .' : '. $tabBodacc['raisonSociale'] .' ('. $tabBodacc['id'].') !'.EOL; + echo date ('Y/m/d - H:i:s'). mysql_error(); + } else + $nbInsertGreffes++; + } + echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertGreffes établissements Greffes consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertGreffes établissements Greffes consolidés.".EOL; +} + +if ($iLiens) { + $iRncs=new MRncs(); + echo date ('Y/m/d - H:i:s')." - Mise à jour de la nouvelle table établissements depuis les Liens Financiers.".EOL; + + $dateInsert=date('YmdHis'); + $nbBodS=$iDb->select('liensRef l LEFT JOIN tabPays p ON l.adresse_pays=p.codPays3', 'l.id, l.siren, l.sirenValide, l.source, l.actif, l.PpPm, l.RS, l.sigle, l.civilite, l.nom, l.prenom, l.nom_usage, l.naissance_date, l.naissance_dept_pays, l.naissance_lieu, l.nat, l.adresse_num, l.adresse_btq, l.adresse_codvoie, l.adresse_libvoie, l.adresse_comp, l.adresse_cp, l.adresse_ville, l.adresse_pays, l.tel, l.fax, l.web, l.email, l.dateSaisie, l.cj, l.ape, l.categorie, l.capital, l.deviseCapital, l.dateCapital, l.nbActions, l.dateNbActions, l.idLoc1Type, l.idLoc1Num, l.idLoc2Type, l.idLoc2Num, l.idLoc3Type, l.idLoc3Num, l.bilMillesime, l.bilDev, l.bilFL, l.bilHN, l.bilFPr, l.bilEE, l.grpTop, l.grpNom, l.dateInsert, p.codePaysInsee, p.libPays', "l.siren<1000 AND l.dateSuppr=0", false,MYSQL_ASSOC,true); + + echo date ('Y/m/d - H:i:s')." - Il y a $nbBodS entreprises en provenance de la base Liens absentes de l'insee à consolider depuis $last_id...".EOL; + + while ($tabBodacc=$iDb->fetch(MYSQL_ASSOC)) { +// l.id, l.siren, l.sirenValide, l.source, l., l.naissance_date, l.naissance_dept_pays, +// l.naissance_lieu, l.nat, l., l., l., l., l., l., l., l.adresse_pays, +// l.web, l.email, l.dateSaisie, l.categorie, l.dateCapital, l.nbActions, l.dateNbActions, l.idLoc1Type, +// l.idLoc2Type, l.idLoc2Num, l.idLoc3Type, l.idLoc3Num, l.bilMillesime, l.bilDev, l.bilFL, l.bilHN, l.bilFPr, l.bilEE, l.grpTop, l.grpNom, l.dateInsert + if ($tabBodacc['PpPm']=='PM') { + $raisonSociale=$tabBodacc['RS']; + } else { + $raisonSociale=trim($tabBodacc['civilite'].' '.strtoupper($tabBodacc['nom']).' '.$tabBodacc['prenom']); + if ($tabBodacc['cj']*1==0) $cj=1900; + else $cj=$tabBodacc['cj']; + } + if ($tabBodacc['adresse_pays']<>'' && $tabBodacc['adresse_pays']<>'FRA') { + $dep=99; + $com=$tabBodacc['codePaysInsee']; + } else { + $dep=floor($tabBodacc['adresse_cp']/1000); + if ($dep>96) $dep=floor($tabBodacc['adresse_cp']/100); + $com=''; + } + + $tabEtab=array( 'source'=>7, + 'source_id'=>$tabBodacc['id'], + 'siren'=>$tabBodacc['siren'], + 'nic'=>0, + 'triCode'=>'', + 'autre_id'=>$tabBodacc['idLoc1Num'], + 'siege'=>1, + 'actif'=>$tabBodacc['actif'], + 'raisonSociale'=>$raisonSociale, + 'enseigne'=>'',// + 'sigle'=>$tabBodacc['sigle'], + 'identite_pre'=>$tabBodacc['nom_usage'], + 'adr_num'=>$tabBodacc['adresse_num'], + 'adr_btq'=>$tabBodacc['adresse_btq'], + 'adr_typeVoie'=>$tabBodacc['adresse_codvoie'], + 'adr_libVoie'=>$tabBodacc['adresse_libvoie'], + 'adr_comp'=>$tabBodacc['adresse_comp'], + 'adr_cp'=>$tabBodacc['adresse_cp'], + 'adr_ville'=>strtoupper($tabBodacc['adresse_ville']), + 'adr_dep'=>$dep, + 'adr_com'=>$com, + 'tel'=>$tabBodacc['tel'], + 'fax'=>$tabBodacc['fax'], + 'cj'=>$tabBodacc['cj'], + 'capital'=>$tabBodacc['capital'], + 'capitalDev'=>$tabBodacc['deviseCapital'], + 'capitalSrc'=>6, + 'ape_etab'=>$tabBodacc['ape'], + 'ape_entrep'=>$tabBodacc['ape'], + 'dateInsert'=>$dateInsert, + ); + + $ret=$iDb->insert('etablissements_tmp',$tabEtab); + if (!$ret && mysql_errno()<>1062) { + echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations Liens sur le siren ". $tabBodacc['siren'] .' : '. $raisonSociale .' ('. $tabBodacc['id'].') !'.EOL; + echo date ('Y/m/d - H:i:s'). mysql_error(); + } else + $nbInsertLiens++; + } + echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertLiens établissements Liens consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertLiens établissements Liens consolidés.".EOL; +} + +if ($iMarques) { + echo date ('Y/m/d - H:i:s')." - Mise à jour des marques.".EOL; + + $nbMarques=$iDb->select('bopi.marques', 'sirenDeposant AS Siren, nomMarque AS Marques', 'sirenDeposant>1000 AND sirenValide>0 ORDER BY Siren ASC', false,MYSQL_ASSOC,true); + + echo date ('Y/m/d - H:i:s')." - Il y a $nbMarques marques à mettre à jour...".EOL; + $sirenPre=false; + $strMarques=''; + while ($tabMarques=$iDb->fetch(MYSQL_ASSOC)) { + $siren =$tabMarques['Siren']; + if ($sirenPre<>$siren && $sirenPre<>false) { + /** Il faut mettre à jour l'ensemble des marques pour ce siren **/ + $tabUpdate=array( 'marques'=>trim($strMarques)); + $ret=$iDb->update($table,$tabUpdate, "siren=$sirenPre"); + if (!$ret) { + echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno()." : Insertion des informations MARQUES sur le siren $sirenPre impossible ($strMarques) !".EOL; + echo date ('Y/m/d - H:i:s'). mysql_error(); + } else $nbInsertMarques++; + $strMarques=''; + } + $strMarques.=' '.$tabMarques['Marques']; + $sirenPre=$siren; + } + echo date ('Y/m/d - H:i:s')." - Il y a $nbInsertMarques établissements avec Marques consolidés.".EOL; + $strMailInfo.=date ('Y/m/d - H:i:s')." - Il y a $nbInsertMarques établissements avec Marques consolidés.".EOL; +} + +if ($table<>'etablissements_tmp') { + date ('Y/m/d - H:i:s')." - Fin du traitement car la table courante n'est pas 'etablissements_tmp' ($table) !".EOL; + die(); +} + +} else { + echo date ('Y/m/d - H:i:s')." - Remise à 0 de tous les ranks de la table etablissements...".EOL; + $tab=array( 'rang'=>0 ); + $iDb->update('etablissements', $tab, 'siren=0'); +} + +echo date ('Y/m/d - H:i:s')." - Mise à jour du rank de l'entreprise pour les recherches par nom".EOL; +/*$iDbRanks=new WDB('sdv1'); +$nbRanks=$iDbRanks->select('`logs`', 'siren, count(*) AS `rang`', "page='identite' AND siren<>0 GROUP BY siren HAVING `rang`>5 ORDER BY `rang` DESC", false,MYSQL_ASSOC,true); + +echo date ('Y/m/d - H:i:s')." - Il y a $nbRanks ranks à mettre à jour...".EOL; +$rangPre=-1; +$tabSiren=array();*/ +if ($pageRankOnly) $tableEtab='etablissements'; +else $tableEtab='etablissements_tmp'; + +$iDb->query("UPDATE $tableEtab, rangSiren + SET $tableEtab.rang=rangSiren.rang + WHERE $tableEtab.siren=rangSiren.siren AND rangSiren.rang>5;"); +echo date ('Y/m/d - H:i:s')." - Fin de la mise à jour du ranking pour la table $tableEtab : Debug erreur n°".mysql_errno().' - '.mysql_error().EOL; + +/* +while ($tabRank=$iDbRanks->fetch(MYSQL_ASSOC)) { + if ($tabRank['rang']<>$rangPre && $rangPre<>-1) { + // On met à jour le Rang précédent + $tab=array( 'rang'=>$rangPre ); + $strSiren=implode(',',$tabSiren); + if (count($tabSiren)==1) { + $iDb->update($tableEtab, $tab, 'siren='.$tabSiren[0]); + } else { + if (!$iDb->update($tableEtab, $tab, "siren IN ($strSiren)")) + echo "Erreur SQL sur ".count($tabSiren)." sirens à MAJ : ".mysql_error().EOL; + } + $tabSiren=array(); + } + $tabSiren[]=substr($tabRank['siren'],0,9); + $rangPre=$tabRank['rang']; +}*/ + +if (!$pageRankOnly) { + echo date ('Y/m/d - H:i:s')." - Mise en place des tables pour l'indexation.".EOL; +// $iDb->query("ALTER TABLE jo.etablissements_tmp PACK_KEYS=1;"); +// echo date ('Y/m/d - H:i:s')." - Commpression des Index de la table OK.".EOL; + $iDb->query("DROP TABLE jo.etablissements_old;"); + echo date ('Y/m/d - H:i:s')." - Suppression de la table etablissements_old : Debug erreur n°".mysql_errno().' - '.mysql_error().EOL; + //$iDb->query("RENAME TABLE jo.etablissements TO jo.etablissements_old;"); + //echo date ('Y/m/d - H:i:s')." - Sauvegarde de l'ancienne table établissements : Debug erreur n°".mysql_errno().' - '.mysql_error().EOL; + //$iDb->query("RENAME TABLE jo.etablissements_tmp TO jo.etablissements;"); + //echo date ('Y/m/d - H:i:s')." - Passage en production de la table tmp : Debug erreur n°".mysql_errno().' - '.mysql_error().EOL; +} + +if ( $consolidationId !== null ) { + $ret=$iDb->select('etablissements_tmp','COUNT(*) AS nbEtab', '1',false,MYSQL_ASSOC); + $nbEtab=$ret[0]['nbEtab']; + $ret = $iDbSdv1->update('sphinx_idx', array('createEnd'=>date('YmdHis'),'nbLines'=>$nbEtab), "id=$consolidationId"); +} + +echo date ('Y/m/d - H:i:s')." - FIN de la consolidation de la base Etablissements".EOL; +$strMailInfo.=date ('Y/m/d - H:i:s')." - FIN de la consolidation de la base Etablissements".EOL; + +//echo date ('Y/m/d - H:i:s')." - Lancement de la commande : indexer --all --config /usr/local/etc/sphinx.conf --rotate".EOL; +/*$nb=@$nbAsso+@$nbBodS+@$nbBodE; +if ($nb>0) die(0); +else die(1);*/ + +sendMail('production@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', 'Consolidation des établissements', $strMailInfo); +die(); + ?> \ No newline at end of file diff --git a/bin/consolideTelFaxIdentite.php b/bin/consolideTelFaxIdentite.php new file mode 100644 index 00000000..2a34d934 --- /dev/null +++ b/bin/consolideTelFaxIdentite.php @@ -0,0 +1,124 @@ +#!/usr/bin/php +'sugarcrm', 'table'=>'accounts', 'champRS'=>'name', + 'champAdresse'=>'billing_address_street', + 'champCP'=>'billing_address_postalcode', + 'champVille'=>'billing_address_city', + 'champSiren'=>'ticker_symbol', + 'champSirenValide'=>'(ticker_symbol<30000 OR ticker_symbol IS NULL)AND deleted')*/ + array('db'=>'jo', 'table'=>'bodacc_detail b LEFT JOIN bodacc_sirenage s ON s.idAnn = b.id AND s.siren = b.siren', + 'champRS'=>'CONCAT(raisonSociale," ",nomCommercial," ",enseigne)', + 'champAdresse'=>'adrLibVoie', + 'champCP'=>'codePostal', + 'champVille'=>'ville', + 'champSiren'=>'b.siren', + 'champNic'=>'nic', + 'champSirenValide'=>'sirenValide', + 'champNicValide'=>'nicValide'), +/* array('db'=>'sdv1', 'table'=>'sirenage', 'champRS'=>'concat( RAISON_SOCIALE , \' \' , RAISON_SOCIALE2 )',//REF NIC RAISON_SOCIALE2 ADRESSE2 NUM_VOIE ADRESSE3 + 'champAdresse'=>'ADRESSE', + 'champCP'=>'CP', + 'champVille'=>'VILLE', + 'champSiren'=>'SIREN', + 'champSirenValide'=>'SIREN'),*/ + ); +$iDbSel=new WDB('jo'); +$iDbMaj=new WDB('insee'); +echo date ('Y/m/d - H:i:s')." - DEBUT de la mise à jour des TEL/FAX des entreprises...".EOL; +$strDate=' AND dateUpdate>DATE_SUB(NOW(), INTERVAL 2 DAY) '; +if ($toutes) + $strDate=''; + +$nbTel=$iDbSel->select('infos_entrep', 'siren, tel, fax',"siren>1000 AND (tel<>'' OR fax<>'') $strDate", false,MYSQL_ASSOC,true); + +echo date ('Y/m/d - H:i:s')." - Il y a $nbTel lignes de TEL/FAX à mettre à jour...".EOL; +$nbAvecMaj=$nbSansMaj=$nbErr=0; +while ($tabTel=$iDbSel->fetch(MYSQL_ASSOC)) { + $siren=$tabTel['siren']; + $tel=trim(strtr($tabTel['tel'], array('.'=>'', ' '=>'', '-'=>''))); + $fax=trim(strtr($tabTel['fax'], array('.'=>'', ' '=>'', '-'=>''))); + $tabTmp=$iDbMaj->select('identite', 'id, SIREN, NIC, ACTIF, SIEGE, TEL, FAX',"SIREN=$siren ORDER BY SIEGE DESC, ACTIF DESC LIMIT 0,1", false, MYSQL_ASSOC); + if (count($tabTmp)>0) { + $tabUpdate=array(); + $etab=$tabTmp[0]; + $id=$etab['id']; + $telPrev=$etab['TEL']; + $faxPrev=$etab['FAX']; + if ($telPrev=='' && $tel<>'') $tabUpdate['TEL']=$tel; + if ($faxPrev=='' && $fax<>'') $tabUpdate['FAX']=$fax; + if (count($tabUpdate)>0) { + $iDbMaj->update('identite',$tabUpdate, "id=$id"); + echo date ('Y/m/d - H:i:s')." - Siren $siren, Tel $tel, Fax $fax : Mise à jour OK".EOL; + $nbAvecMaj++; + } + else { + $nbSansMaj++; + // echo date ('Y/m/d - H:i:s')." - Siren $siren, Tel $tel, Fax $fax : PAS de mise à jour".EOL; + } + } else { + echo date ('Y/m/d - H:i:s')." - Siren $siren, Tel $tel, Fax $fax : Pas de fiche identite !".EOL; + $nbErr++; +// die(); + } + + /*print_r($tabTel); + print_r($tabTmp); + die();*/ + +} + +echo date ('Y/m/d - H:i:s')." - FIN de la mise à jour des TEL/FAX des entreprises ($nbAvecMaj MAJ/$nbTel avec $nbErr erreurs).".EOL; +die(); + ?> \ No newline at end of file diff --git a/bin/convertSdCsv.php b/bin/convertSdCsv.php new file mode 100644 index 00000000..e8f3c1c2 --- /dev/null +++ b/bin/convertSdCsv.php @@ -0,0 +1,280 @@ +#!/usr/bin/php +0, 'creations'=>0, 'mmd'=>0, 'procol'=>0, 'radiations'=>0, 'ventes'=>0); +$procoltot=array('CONC'=>0, 'SAUV'=>0, 'RJ'=>0, 'LJ'=>0, 'SUITE'=>0); + +foreach ($tabFichier as $iFic=>$fichier) { + + $ligne001=$ligne100=$ligne104=$ligne999=0; + $ligne100chap=array('comptes'=>0, 'creations'=>0, 'mmd'=>0, 'procol'=>0, 'radiations'=>0, 'ventes'=>0); + $procol=array('CONC'=>0, 'SAUV'=>0, 'RJ'=>0, 'LJ'=>0, 'SUITE'=>0); + $tabLignes=file($fichier); + $fp=fopen($fichier.'.csv', 'w'); + + foreach ($tabLignes as $i=>$ligne) { + $ecrireLignePre=false; + $typeLigne=substr($ligne, 0, 3)*1; + switch ($typeLigne) { + case 1: // Ligne ignorée + // Ecriture de l'entête + $siren ='Siren'; + $nic ='Nic'; + $ref ='Référence'; + $numPar ='Parution'; + $bodacc ='Bodacc'; + $datePar='Date parution'; + $numAnn ='Numéro Annonce'; + $cor ='Type Annonce'; + $libTri ='Tribunal'; + $numRC ='Numéro RCS'; + $raisonS='Raison sociale'; + $catEven='Chapitre'; + $txtEven='Evènement(s)'; + $txtAnn ='Texte Annonce'; + + $ligneOut=''; + $ligne001++; + $ligne001tot++; + break; + case 100: // Structure Bodacc + $ligneOut="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn"; + $ligne100++; + $ligne100tot++; + + $siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce + $nic = trim(substr($ligne, 22, 5 )); // Nic + $ref = trim(substr($ligne, 71, 18 )); // Référence Client + $numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année + $bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C + $datePar= WDate::dateT('Ymd','d/M/Y',substr($ligne,31,8)); // Date de parution du Bodacc Format AAAAMMJJ + $numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc + $typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce + $corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion + $corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ + $corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion + $corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion + $cor=''; + if ($typeAnn<>'I') + $cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate); + switch($typeAnn) { + case 'I': $cor='Insertion'.$cor; break; + case 'A': $cor='Additif'.$cor; break; + case 'R': $cor='Rectificatif'.$cor; break; + case 'S': $cor='Suppression'.$cor; break; + default: break; + } + $codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc + $libTri=$iBodacc->getTribunalNom($codeTri); + + $adrEtNum= substr($ligne, 596 , 4 ); // Adresse de l'établissement : Numéro dans la voie + $adrEtVoie= substr($ligne, 606 , 50 ); // Adresse de l'établissement : Libellé de la voie + $adrEtCp= substr($ligne, 746 , 5 ); // Code Postal de l'établissement + $adrEtVille=substr($ligne, 751 , 45 ); // Ville de l'établissement + $adrEnNum= substr($ligne, 796 , 4 ); // Adresse de l'établissement : Numéro dans la voie + $adrEnVoie= substr($ligne, 806 , 50 ); // Adresse de l'établissement : Libellé de la voie + $adrEnCp= substr($ligne, 946 , 5 ); // Code Postal de l'établissement + $adrEnVille=substr($ligne, 951 , 45 ); // Ville de l'établissement + + $numRC = trim(substr($ligne, 95 , 9 )); // Numéro de RC (Registre du Commerce) de l'entreprise + $raisonS= trim(substr($ligne, 104 , 150 )); // Raison sociale de l'entreprise + $even=array(); + $even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN + $even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN + $even[5]= substr($ligne, 1004, 4 )*1; // Code Evènement Bodacc n°3 Cf. Table EVEN + $even[4]= substr($ligne, 1008, 4 )*1; // Code Evènement Bodacc n°4 Cf. Table EVEN + $even[3]= substr($ligne, 1012, 4 )*1; // Code Evènement Bodacc n°5 Cf. Table EVEN + $even[2]= substr($ligne, 1016, 4 )*1; // Code Evènement Bodacc n°6 Cf. Table EVEN + $even[1]= substr($ligne, 1020, 4 )*1; // Code Evènement Bodacc n°7 Cf. Table EVEN + $even[0]= substr($ligne, 1024, 4 )*1; // Code Evènement Bodacc n°8 Cf. Table EVEN + $txtEven=''; + foreach ($even as $codeEven) + if ($codeEven<>0) { + $txtEven.=$iBodacc->getEvenement($codeEven).', '; + $catEven=$iBodacc->getChapitreEvenement($codeEven); + } + else + $txtEven.=''; + if ($catEven=='procol') { + switch($codeEven) { + case 1050: + case 1055: $procol['CONC']++; $procoltot['CONC']++; break; + case 1100: $procol['SAUV']++; $procoltot['SAUV']++; break; + case 1200: + case 1201: + case 1211: + case 1212: $procol['RJ']++; $procoltot['RJ']++; break; + case 1300: + case 1301: + case 1302: + case 1303: + case 1304: + case 1305: + case 1306: + case 1307: + case 1311: + case 1312: + case 1313: $procol['LJ']++; $procoltot['LJ']++; break; + default: $procol['SUITE']++; $procoltot['SUITE']++; break; + } + } + @$ligne100chap[$catEven]++; + @$ligne100chaptot[$catEven]++; + $txtEven=substr($txtEven,0,strlen($txtEven)-2); + $txtAnn=''; + $ecrireLignePre=true; + break; + case 104: // Annonce + $ligne104++; + $ligne104tot++; + $txtAnn=trim($txtAnn.' '.str_replace(';','.',trim(substr($ligne, 89 , 1910)))); // Texte Annonce + break; + case 999: // Ligne ignorée + $ligneOut="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn"; + $ligne999++; + $ligne999tot++; + $ecrireLignePre=true; + break; + default: // Ligne non gérée + break; + } + if ($ecrireLignePre) + fwrite($fp, $ligneOut.EOL); + if ($ajoutNic && ($typeLigne==1 || $typeLigne==999 || $catEven=='procol' || + ($catEven<>'comptes' && + (preg_match('/VITRY.*SEINE/i', $adrEtVille) || preg_match('/VITRY.*SEINE/i', $adrEnVille))) + )) { +// $nic=0; + if ($siren*1>1000) { + $tabEt=$iInsee->getEtablissements($siren, '', 0, 200, 200, 94); + //print_r($tabEt); + //die(); + } + if ($tabEt['nbReponsesTotal']==1) { + // 1 seul établissement connu : on le valide en auto @todo : Vérifier adresser + $nic=$tabEt['reponses'][0]['Nic']; + } elseif ($tabEt['nbReponsesTotal']==0) { + continue; + } else { + $nicTrouve=$nbNic=0; + foreach ($tabEt['reponses'] as $iEt=>$tabIdEt) { + $villeRec=$tabIdEt['Ville']; + $numRec=substr($tabIdEt['Adresse'],0,4)*1; + $numDemEt=$adrEtNum*1; + $numDemEn=$adrEnNum*1; + if (($numDemEt==0 && $numDemEn==0) || $numRec==0) continue; + if ($numDemEt==$numRec && preg_match('/VITRY.*SEINE/i', $villeRec)) { + $nicTrouve=$tabIdEt['Nic']; + $nbNic++; + } elseif ($numDemEn==$numRec && preg_match('/VITRY.*SEINE/i', $villeRec)) { + $nicTrouve=$tabIdEt['Nic']; + $nbNic++; + } + } + //if ($nbNic==1) { + $nic=$nicTrouve; + //} + } + + echo substr($ligne,0,22).initstr($nic*1,5,'0',ALIGN_RIGHT).substr($ligne,27,2000); + } + } + if ($ajoutNic) echo EOL; + fclose($fp); + if ($verbose) echo date ('Y/m/d - H:i:s')." - Conversion terminée de $fichier ($ligne100 annonces)" . EOL; + elseif ($sortieCSV) { + echo "$fichier;$ligne100;"; + foreach ($ligne100chap as $chap=>$nb) echo "$nb;"; + foreach ($procol as $chap=>$nb) echo "$nb;"; + echo EOL; + } +} + +if ($sortieCSV) { + echo "$iFic fichiers;$ligne100tot;"; + foreach ($ligne100chaptot as $chap=>$nb) echo "$nb;"; + foreach ($procoltot as $chap=>$nb) echo "$nb;"; + echo EOL; +} else + echo date ('Y/m/d - H:i:s')." - Conversion terminée : $iFic fichiers, $ligne001tot entêtes, $ligne100tot annonces, $ligne104tot lignes de texte, $ligne999tot fin de fichier !" . EOL; + +die(); + + ?> diff --git a/bin/convertSdCsv2.php b/bin/convertSdCsv2.php new file mode 100644 index 00000000..de352d67 --- /dev/null +++ b/bin/convertSdCsv2.php @@ -0,0 +1,602 @@ +#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini +0, 'creations'=>0, 'mmd'=>0, 'procol'=>0, 'radiations'=>0, 'ventes'=>0); +$procoltot=array('CONC'=>0, 'SAUV'=>0, 'RJ'=>0, 'LJ'=>0, 'SUITE'=>0); + +foreach ($tabFichier as $iFic=>$fichier) { + + $ligne001=$ligne100=$ligne104=$ligne200=$ligne999=0; + $ligne100chap=array('comptes'=>0, 'creations'=>0, 'mmd'=>0, 'procol'=>0, 'radiations'=>0, 'ventes'=>0); + $procol=array('CONC'=>0, 'SAUV'=>0, 'RJ'=>0, 'LJ'=>0, 'SUITE'=>0); + $tabLignes=file($fichier); + $fp=fopen($fichier.'.csv', 'w'); + + foreach ($tabLignes as $i=>$ligne) { + $ligne=strtr($ligne,';',' '); + $ecrireLignePre=false; + $typeLigne=substr($ligne, 0, 3)*1; + switch ($typeLigne) { + case 1: // Ligne ignorée + // if ($csvAnn && !$csvId) + // Ecriture de l'entête + $siren ='Siren'; + $nic ='Nic'; + $ref ='Référence'; + $numPar ='Parution'; + $bodacc ='Bodacc'; + $datePar='Date parution'; + $numAnn ='Numéro Annonce'; + $cor ='Type Annonce'; + $libTri ='Tribunal'; + $numRC ='Numéro RCS'; + $raisonS='Raison sociale'; + $catEven='Chapitre'; + $txtEven='Evènement(s)'; + $txtAnn ='Texte Annonce'; + + $codeTri ='Code Tribunal'; + $actifEt ='Etab. Actif'; + $siege ='Siège'; + $nomCom ='Nom Commercial'; + $enseigne ='Enseigne'; + $sigle ='Sigle'; + $adrEtNum ='Adresse Num'; + $adrEtBtq ='Adresse Btq'; + $adrEtTypV ='Adresse Type Voie'; + $adrEtVoie ='Adresse Lib Voie'; + $adrEtComp ='Complèment adresse'; + $adrEtDisp ='Adresse Distribution Spéciale'; + $adrEtCp ='Adresse CP'; + $adrEtVille ='Adresse Ville'; + $adrEtPays ='Adresse Pays'; + $capital ='Capital'; + $capitalDev =''; + $cj ='Forme Juridique'; + $civilite ='Civilité'; + $nbEtab ='Nb Etab'; + $dateMaj ='Date MAJ'; + $sitJur ='Situation Juridique'; + $depCom ='Code Commune'; + $rivoli ='Fantoir'; + $iris ='IRIS'; + $ilot ='Ilot'; + $indDom ='Domiciliation'; + $tel ='Téléphone'; + $fax ='Fax'; + $web ='Web'; + $mail ='Mail'; + $auxil ='Auxiliarité'; + $saisonat ='Saisonnalité'; + $activnat ='Nature Activité'; + $origine ='Origine création'; + $typexploit ='Type Exploitation'; + $lieuact ='Lieu Activité'; + $actisurf ='Type magasin'; + $prodpart ='ProdPart'; + $arronet ='Arrondissemeent'; + $ctonet ='Canton'; + $tcd ='Tranche commune'; + $zemet ='Zone Emploi'; + $du ='Dépt Unité Urbaine'; + $tu ='Taille Unité Urbaine'; + $uu ='Numéro Unité Urbaine'; + $dcret ='Date création étab.'; + $apet ='NAF étab.'; + $nacet ='NACE étab'; + $dapet ='Année NAF étab'; + $effet ='Effectif étab.'; + $teffet ='Tranche Eff. ét.'; + $defet ='Année effectif étab.'; + $modet ='Modalité APE étab.'; + $explet ='Etab. exploitant'; + $rpet ='Région étab.'; + $dreactet ='Date réactivation étab.'; + $dateferet ='Date fermeture étab.'; + $eaeant ='Année EAE'; + $eaeapet ='APE1 EAE'; + $eaesec1t ='APE2 EAE'; + $eaesec2t ='APE3 EAE'; + $dcren ='Date création ent.'; + $apen ='NAF ent.'; + $nacen ='NACE ent.'; + $dapen ='Année NAF ent.'; + $effen ='Effectif ent.'; + $teffen ='Tranche Eff. ent'; + $defen ='Année effectif ent.'; + $moden ='Modalité APE ent.'; + $explen ='Ent. exploitante'; + $rpen ='Région ent.'; + $dreacten ='Date réactivation ent.'; + $dateferen ='Date fermeture ent.'; + $dateImma ='Date Immatriculation'; + $dateRad ='Date Radiation'; + $tca ='Tranche CA'; + $tcaExp ='Tranche CA Exp.'; + $zus ='ZUS'; + $zru ='ZRU'; + $zfu ='ZFU'; + $cucs ='CUCS'; + $afr ='AFR'; + $zrr ='ZRR'; + $tva ='TVA'; + $isin ='ISIN'; + $dir1nom ='Dirigeant 1 nom'; + $dir1prenom ='Dirigeant 1 prénom'; + $dir1cfct ='Dirigeant 1 code Fct'; + $dir2nom ='Dirigeant 2 nom'; + $dir2prenom ='Dirigeant 2 prénom'; + $dir2cfct ='Dirigeant 2 code Fct'; + $bilanClot ='Date dernier bilan'; + $bilanDuree ='Durée bilan'; + $bilanCA ='Dernier CA'; + $bilanRES ='Dernier Résultat'; + + $ligneOut=''; + $ligne001++; + $ligne001tot++; + break; + case 200: // Structure Identité + if (!$csvId) break; + $ligneOut ="$siren;$nic;$codeTri;$libTri;$numRC;$actifEt;$siege;$raisonS;$nomCom;$enseigne;$sigle;"; + $ligneOut.="$adrEtNum;$adrEtBtq;$adrEtTypV;$adrEtVoie;$adrEtComp;$adrEtDisp;$adrEtCp;$adrEtVille;$adrEtPays;"; + $ligneOut.="$capital $capitalDev;$cj;$civilite;$nbEtab;$dateMaj;$sitJur;$depCom;$rivoli;$iris;$ilot;$indDom;"; + $ligneOut.="$tel;$fax;$web;$mail;$auxil;$saisonat;$activnat;$origine;$typexploit;$lieuact;$actisurf;$prodpart;"; + $ligneOut.="$arronet;$ctonet;$tcd;$zemet;$du;$tu;$uu;$dcret;$apet;$nacet;$dapet;$effet;$teffet;"; + $ligneOut.="$defet;$modet;$explet;$rpet;$dreactet;$dateferet;$eaeant;$eaeapet;$eaesec1t;$eaesec2t;"; + $ligneOut.="$dcren;$apen;$nacen;$dapen;$effen;$teffen;$moden;$explen;$rpen;$dreacten;$dateferen;$dateImma;$dateRad;$tca;$tcaExp;"; + $ligneOut.="$zus;$zru;$zfu;$cucs;$afr;$zrr;$tva;$isin;$dir1nom;$dir1prenom;$dir1cfct;$dir2nom;$dir2prenom;$dir2cfct;"; + $ligneOut.="$bilanClot;$bilanDuree;$bilanCA;$bilanRES"; + $ligne200++; + $ligne200tot++; + + $siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise + $nic = trim(substr($ligne, 22, 5 )); // Nic de l'établissement + /* + $ref = trim(substr($ligne, 71, 18 )); // Référence Client + $numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année + $bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C + $datePar= WDate::dateT('Ymd','d/M/Y',substr($ligne,31,8)); // Date de parution du Bodacc Format AAAAMMJJ + $numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc + $typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce + $corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion + $corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ + $corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion + $corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion + $cor=''; + if ($typeAnn<>'I') + $cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate); + switch($typeAnn) { + case 'I': $cor='Insertion'.$cor; break; + case 'A': $cor='Additif'.$cor; break; + case 'R': $cor='Rectificatif'.$cor; break; + case 'S': $cor='Suppression'.$cor; break; + default: break; + } + */ + $codeTri=trim(substr($ligne, 41 , 6 )); // Code Tribunal Codification interne utilisée par le Bodacc + $libTri=@$iBodacc->getTribunalNom($codeTri); + + $adrEtNum= trim(substr($ligne, 513 , 4)); // Adresse de l'établissement : Numéro dans la voie + $adrEtBtq= trim(substr($ligne, 517 , 1 )); // ADR_BTQ Indicateur de répétition (Bis, Ter, etc...) + $adrEtTypV= trim(substr($ligne, 518 , 4 )); // ADR_TYPVOIE Type de voie + $adrEtVoie= trim(substr($ligne, 522 , 32 )); // Adresse de l'établissement : Libellé de la voie + $adrEtComp= trim(substr($ligne, 591 , 38 )); // ADR_COMP Complément d'adresse + $adrEtDisp = trim(substr($ligne, 629 , 38 )); // ADR_DISTSP Distribution spéciale + $adrEtCp= trim(substr($ligne, 586 , 5 )); // Code Postal de l'établissement + $adrEtVille=trim(substr($ligne, 554 , 32 )); // Ville de l'établissement + $adrEtPays = trim(substr($ligne, 667 , 38 )); // PAYS Pays + + $numRC = trim(substr($ligne, 31 , 10 )); // Numéro de RC (Registre du Commerce) de l'entreprise + $raisonS= trim(substr($ligne, 73 , 160 )); // Raison sociale de l'entreprise + /* + $siren = substr($ligne, 3 , 10 ); // ID Numéro unique d'identification interne d'un établissement S&D + $siren = substr($ligne, 27 , 3 ); // SOURCE Source de la fiche d'identité + $siren = substr($ligne, 30 , 1 ); // SIRETVALIDE Siren/siret valide + */ + $dateMaj= substr($ligne, 47 , 8 ); // DATEMAJ Date de la dernière mise à jour dans la base S&D + $actifEt = substr($ligne, 55 , 1 ); // ACTIF Établissement juridiquement actif + $actifEco= substr($ligne, 56 , 1 ); // ACTIFECO Établissement économiquement actif + $sitJur = trim(substr($ligne, 57 , 2 )); // SITJUR Situation Juridique de l'entreprise + $codeEve = substr($ligne, 59 , 3 ); // EVE Dernier événement Insee recensé + $dateEve = substr($ligne, 62 , 8 ); // DATEVE Date du dernier événement Insee recensé + // $siren = substr($ligne, 70 , 2 ); // TYPETAB Type d'établissement concerné par l'événement + $siege = substr($ligne, 72 , 1 ); // SIEGE Établissement siège, secondaire ou principal + $nomCom = trim(substr($ligne, 233 , 160 )); // NOMCOM Nom commercial + $enseigne = trim(substr($ligne, 393 , 80 )); // ENSEIGNE Enseigne de l'établissement + $sigle = trim(substr($ligne, 473 , 40 )); // SIGLE sigle de l'entreprise + $depCom = substr($ligne, 707 , 5 ); // ADR_DEP Département de l'établissement + $rivoli = trim(substr($ligne, 712 , 5 )); // CODEVOIE Code voie de l'établissement + $iris = trim(substr($ligne, 717 , 4 )); // CODEIRIS Code Iris de l'établissement + $ilot = trim(substr($ligne, 721 , 5 )); // CODEILOT Code Ilot de l'établissement + $indDom = trim(substr($ligne, 726 , 1 )); // ADRESSEDOM Indicateur d'adresse de domiciliation + $tel= trim(substr($ligne, 727 , 15 )); // TEL Numéro de téléphone + $fax = trim(substr($ligne, 742 , 15 )); // FAX Numéro de télécopie + $web = trim(substr($ligne, 757 , 80 )); // WEB Site Web + $mail = trim(substr($ligne, 837 , 80 )); // MAIL Adresse Email de contact générique + $auxilt = trim(substr($ligne, 917 , 1 )); // AUXILT Auxiliarité de l'activité de l'établissement + $saisonat= trim(substr($ligne, 918 , 1 )); // SAISONAT Saisonnalité de l'établissement + $activnat= trim(substr($ligne, 919 , 2 )); // ACTIVNAT Nature de l'activité de l'établissement + $origine= trim(substr($ligne, 921 , 2 )); // ORIGINE Origine de la création de l'établissement + $typexploit= trim(substr($ligne, 923 , 2 )); // TYPEXPLOIT Type d'exploitation + $lieuact=trim(substr($ligne, 925 , 2 )); // LIEUACT Lieu de l'activité de l'établissement + $actisurf=trim(substr($ligne, 927 , 2 )); // ACTISURF Type de magasin + $prodpart=trim(substr($ligne, 929 , 1 )); // PRODPART Participation particulière à la production de l'établissement + $arronet=trim(substr($ligne, 930 , 2 )); // ARRONET Arrondissement de l'établissement + $ctonet = trim(substr($ligne, 932 , 3 )); // CTONET Canton + $tcd=trim(substr($ligne, 935 , 2 )); // TCD Tranche de commune détaillée + $zemet= trim(substr($ligne, 937 , 2 )); // ZEMET Zone d'emploi + $du= trim(substr($ligne, 939 , 2 )); // DU Département de l'unité urbaine de localisation + $tu= trim(substr($ligne, 941 , 1 )); // TU Taille de l'unité urbaine + $uu= trim(substr($ligne, 942 , 2 )); // UU Numéro de l'untié urbaine + $dcret = substr($ligne, 944 , 8 ); // DCRET Date de création de l'établissement + $apet = substr($ligne, 952 , 5 ); // APE_ETAB Code activité dans la NAF rév2 de l'établissement + $nacet= trim(substr($ligne, 957 , 5 )); // NACE_ETAB Code activité NACE de l'établissement + $dapet = trim(substr($ligne, 962 , 4 )); // DAPET Année de validité de l'activité principale de l'établissement + $effet = trim(substr($ligne, 966 , 7 ))*1; // EFF_ET Effectif de l'établissement + $teffet = substr($ligne, 973 , 2 ); // TEFF_ET Tranche d'effectif de l'établissement + $defet = trim(substr($ligne, 975 , 4 )); // DEFET Année de mise à jour de l'effectif établissement + $modet = trim(substr($ligne, 979 , 1 )); // MODET Modalité de l'activité pricipale de l'établissement + $explet= trim(substr($ligne, 980 , 1 )); // EXPLET Etablissement exploitant tout ou partie des moyens de production + $rpet = trim(substr($ligne, 981 , 2 )); // RPET Région de localisation de l'établissement + $dreactet = trim(substr($ligne, 983 , 8 )); // DREACTET Date de réactivation de l'établissement + $dateferet = trim(substr($ligne, 991 , 8 )); // DATEFERET Date de fermeture de l'établissement + $eaeant = trim(substr($ligne, 999 , 4 )); // EAEANT Année de validité des rubriques de niveau Etab provenant des EAE* + $eaeapet = trim(substr($ligne, 1003 , 5 )); // EAEAPET Activité principale de l'établissement issue des EAE + $eaesec1t = trim(substr($ligne, 1008 , 5 )); // EAESEC1T Activité secondaire de l'établissement issue des EAE + $eaesec2t = trim(substr($ligne, 1013 , 5 )); // EAESEC2T Autre activité secondaire de l'établissement issue des EAE + $dcren = substr($ligne, 1018 , 8 ); // DCREN Date de création de l'entreprise + $apen = substr($ligne, 1026 , 5 ); // APE_ENT Code activité dans la NAF rév2 de l'entreprise + $nacen = substr($ligne, 1031 , 5 ); // NACE_ENT Code activité NACE de l'entreprise + $dapen = substr($ligne, 1036 , 4 ); // DAPEN Année de validité de l'activité principale de l'entreprise + $effen = trim(substr($ligne, 1040 , 7 ))*1; // EFF_ENT Effectif de l'entreprise + $teffen = substr($ligne, 1047 , 2 ); // TEFF_ENT Tranche d'effectif de l'entreprise + $defen = substr($ligne, 1049 , 4 ); // DEFEN Année de mise à jour de l'effectif entreprise + $moden = substr($ligne, 1053 , 1 ); // MODEN Modalité de l'activité pricipale de l'entreprise + $explen = substr($ligne, 1054 , 1 ); // EXPLEN Entreprise exploitant tout ou partie des moyens de production + $rpen = substr($ligne, 1055 , 2 ); // RPEN Région de localisation du siège de l'entreprise + $dreacten = substr($ligne, 1057 , 8 ); // DREACTEN Date de réactivation de l'entreprise + $dateferen = substr($ligne, 1065 , 8 ); // DATEFEREN Date de fermeture de l'entreprise + $dateImma = substr($ligne, 1073 , 8 ); // DATEIMMAT Date d'immatriculation de l'entreprise au RCS + $dateRad = substr($ligne, 1081 , 8 ); // DATERAD Date de radiation de l'entreprise du RCS + $capital = trim(substr($ligne, 1089 , 15 ))*1; // CAPITAL Montant du capital de l'entreprise + $capitalTyp= substr($ligne, 1104 , 1 ); // CAPITALTYPE Type de capital + $capitalDev= trim(substr($ligne, 1105 , 3 )); // CAPITALDEV Devise du capital + $cj = substr($ligne, 1108 , 4 ); // CJ Catégorie Juridique de l'entreprise + $civilite= trim(substr($ligne, 1112 , 1 )); // CIVILITE Civilité de l'entreprise si Personne Physique + $nbEtab = trim(substr($ligne, 1113 , 4 ))*1; // NBETAB Nombre d'établissements actifs de l'entreprise + $tca= substr($ligne, 1117 , 1 ); // TCA Tranche de chiffre d'affaire + $tcaExp = substr($ligne, 1118 , 1 ); // TCAEXP Tranche de chiffre d'affaire à l'export + $aprm = substr($ligne, 1119 , 6 ); // APRM Activité principale au registre des métiers + $monoreg= substr($ligne, 1125 , 1 ); // MONOREG Mono-régionalité de l'entreprise + $regimp = substr($ligne, 1126 , 2 ); // REGIMP Principale région d'implantation de l'entreprise + $monoact = substr($ligne, 1128 , 1 ); // MONOACT Mono-activité de l'entreprise + $nicsiege = substr($ligne, 1129 , 5 ); // NICSIEGE Nic de l'établissement siège + $recme = substr($ligne, 1134 , 1 ); // RECME Répertoire des Entreprises Contrôlées Majoritairement par l’État + $siretLie = substr($ligne, 1135 , 14 ); // SIRETLIE Siret lié : prédécesseur, successeur, doublon, autre + $siretLieType = substr($ligne, 1149 , 1 ); // SIRETLIETYPE Type de sitet lié + $nicPrec = substr($ligne, 1150 , 5 ); // NICPREC Nic de l'établissement prédécesseur (dans le cadre d'un transfert) + $nicSuiv = substr($ligne, 1155 , 5 ); // NICSUIV Nic de l'établissement successeur (dans le cadre d'un transfert) + /* + $siren = substr($ligne, 1160 , 2 ); // insDESTINAT Destination Insee + $siren = substr($ligne, 1162 , 5 ); // insDEPCOMEN Code commune Insee du siège de l'entreprise + $siren = substr($ligne, 1167 , 1 ); // insMNICSIEGE Indicateur de MAJ du NIC SIEGE + $siren = substr($ligne, 1168 , 1 ); // insMNOMEN Indicateur de MAJ de la Raison Sociale + $siren = substr($ligne, 1169 , 1 ); // insMCJ Indicateur de MAJ de la Forme Juridique + $siren = substr($ligne, 1170 , 1 ); // insMAPEN Indicateur de MAJ du NAF entreprise + $siren = substr($ligne, 1171 , 1 ); // insMENSEIGNE Indicateur de MAJ de l'ENSEIGNE + $siren = substr($ligne, 1172 , 1 ); // insMAPET Indicateur de MAJ du NAF établissement + $siren = substr($ligne, 1173 , 1 ); // insMADRESSE Indicateur de MAJ de l'ADRESSE de l'établissement + $siren = substr($ligne, 1174 , 1 ); // insMAUXILT Indicateur de MAJ de l'AUXILIARITE + $siren = substr($ligne, 1175 , 1 ); // insMSIGLE Indicateur de MAJ du SIGLE + $siren = substr($ligne, 1176 , 1 ); // insMEXPLEN Indicateur de MAJ du caractère EXPLOITANT entrep + $siren = substr($ligne, 1177 , 1 ); // insMEXPLET Indicateur de MAJ du caractère EXPLOITANT étab + */ + $adr_rnvp = substr($ligne, 1178 , 1 ); // ADR_RNVP Type de Prestation RNVP si RNVP + $adrL1 = substr($ligne, 1179 , 38 ); // L1_nomen Ligne 1 : Nom de l'entreprise + $adrL2 = substr($ligne, 1217 , 38 ); // L2_COMP Ligne 2 : Complément de nom + $adrL3 = substr($ligne, 1255 , 38 ); // L3_CADR Ligne 3 : Complément d'adresse + $adrL4 = substr($ligne, 1293 , 38 ); // L4_VOIE Ligne 4 : Adresse + $adrL5 = substr($ligne, 1331 , 38 ); // L5_DISP Ligne 5 : Distribution spéciale + $adrL6 = substr($ligne, 1369 , 38 ); // L6_POST Ligne 6 : Code Postal, commune, etc.. + $adrL7 = substr($ligne, 1407 , 38 ); // L7_ETRG Ligne 7 : Pays si étranger + /* + $siren = substr($ligne, 1445 , 4 ); // EAEANN Année de validité des rubriques de niveau ENTREP provenant des EAE* + $siren = substr($ligne, 1449 , 5 ); // EAEAPEN Activité principale de l'entreprise issue des EAE + $siren = substr($ligne, 1454 , 5 ); // inseaesec1n Activité secondaire n°1 de l'entreprise issue des EAE + $siren = substr($ligne, 1459 , 5 ); // inseaesec2n Activité secondaire n°2 de l'entreprise issue des EAE + $siren = substr($ligne, 1464 , 5 ); // inseaesec3n Activité secondaire n°3 de l'entreprise issue des EAE + $siren = substr($ligne, 1469 , 5 ); // inseaesec4n Activité secondaire n°4 de l'entreprise issue des EAE + */ + $gpsX = substr($ligne, 1474 , 12 ); // GPSX Latitude en ° et décimales de ° (format WGS1984) + $gpsY = substr($ligne, 1486 , 12 ); // GPSY Longitude en ° et décimales de ° (format WGS1984) + $gpSP = substr($ligne, 1498 , 1 ); // GPSP Niveau de précision du géocodage (de 0 à 9) + $zus = trim(substr($ligne, 1499 , 10 )); // ZUS Identifiant de la Zone Urbaine Sensible + $zru = trim(substr($ligne, 1509 , 10 )); // ZRU Identifiant de la Zone de Rénovation Urbaine + $zfu = trim(substr($ligne, 1519 , 10 )); // ZFU Identifiant de la Zone Franche Urbaine + $cucs = trim(substr($ligne, 1529 , 10 )); // CUCS Identifiant de la Zone Contrat Urbain de Cohésion Social + $afr = trim(substr($ligne, 1539 , 10 )); // AFR Identifiant de la Zone AFR + $zrr = trim(substr($ligne, 1549 , 10 )); // ZRR Identifiant de la ZRR + $tva = trim(substr($ligne, 1559 , 15 )); // TVA Numéro de TVA Intracommunataire + $tvaValide = substr($ligne, 1574 , 1 ); // TVAVALIDE Numéro de TVA validé + // $siren = substr($ligne, 1575 , 1 ); // ANCIENSIEGE Ancien siège + $isin= trim(substr($ligne, 1576 , 12 )); // CODEISIN Code ISIN de l'entreprise si cotation en bourse + $dir1nom = trim(substr($ligne, 1588 , 40 )); // PPDIR1NOM Nom du principal dirigeant + $dir1prenom = trim(substr($ligne, 1628 , 30 )); // PPDIR1PRENOM Prénom du principal dirigeant + $dir1naissn = substr($ligne, 1658 , 40 ); // PPDIR1NNAISS Nom de naissance du ppl dirigeant + $dir1naissd = substr($ligne, 1698 , 8 ); // PPDIR1DNAISS Date de naissance + $dir1naissl = substr($ligne, 1706 , 35 ); // PPDIR1LNAISS Lieu de Naissance + $dir1cfct= substr($ligne, 1741 , 4 ); // PPDIR1FONC Code Fonction + // $siren = substr($ligne, 1745 , 8 ); // PPDIR1MAJ Date de MAJ du ppl dirigeant + $dir2nom= trim(substr($ligne, 1753 , 40 )); // PPDIR2NOM Nom du seconde principal dirigeant + $dir2prenom = trim(substr($ligne, 1793 , 30 )); // PPDIR2PRENOM Prénom du 2ème principal dirigeant + $dir2naissn = substr($ligne, 1823 , 40 ); // PPDIR2NNAISS Nom de naissance du 2ème ppl dirigeant + $dir2naissd = substr($ligne, 1863 , 8 ); // PPDIR2DNAISS Date de naissance du 2ème ppl dirigeant + $dir2naissl = substr($ligne, 1871 , 35 ); // PPDIR2LNAISS Lieu de Naissance du 2ème ppl dirigeant + $dir2cfct = substr($ligne, 1906 , 4 ); // PPDIR2FONC Code Fonction du 2ème ppl dirigeant + // $siren = substr($ligne, 1910 , 8 ); // PPDIR2MAJ Date de MAJ du 2ème ppl dirigeant + $bilanClot= trim(substr($ligne, 1918 , 8 ))*1; // BILANCLOT Date de dernière clôture de bilan disponible + $bilanDuree = trim(substr($ligne, 1926 , 2 ))*1; // BILANDUREE Durée du dernier exercice disponible + $bilanCA= trim(substr($ligne, 1928 , 15 ))*1; // BILANCA Chiffre d'affaires au dernier bilan disponible + $bilanRES = trim(substr($ligne, 1943 , 15 ))*1; // BILANRES Résultat au dernier bilan disponible + // $siren = substr($ligne, 1958 , 41 ); // FILLER1 Zone libre + $ecrireLignePre=true; + break; + + case 100: // Structure Bodacc + $ligne100++; + $ligne100tot++; + + if (!$csvAnn) break; + $ligneOut="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn"; + + $siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce + $nic = trim(substr($ligne, 22, 5 )); // Nic + $ref = trim(substr($ligne, 71, 18 )); // Référence Client + $numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année + $bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C + $datePar= WDate::dateT('Ymd','d/M/Y',substr($ligne,31,8)); // Date de parution du Bodacc Format AAAAMMJJ + $numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc + $typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce + $corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion + $corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ + $corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion + $corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion + $cor=''; + if ($typeAnn<>'I') + $cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate); + switch($typeAnn) { + case 'I': $cor='Insertion'.$cor; break; + case 'A': $cor='Additif'.$cor; break; + case 'R': $cor='Rectificatif'.$cor; break; + case 'S': $cor='Suppression'.$cor; break; + default: break; + } + $codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc + $libTri=$iBodacc->getTribunalNom($codeTri); + + $adrEtNum= substr($ligne, 596 , 4 ); // Adresse de l'établissement : Numéro dans la voie + $adrEtVoie= substr($ligne, 606 , 50 ); // Adresse de l'établissement : Libellé de la voie + $adrEtCp= substr($ligne, 746 , 5 ); // Code Postal de l'établissement + $adrEtVille=substr($ligne, 751 , 45 ); // Ville de l'établissement + $adrEnNum= substr($ligne, 796 , 4 ); // Adresse de l'établissement : Numéro dans la voie + $adrEnVoie= substr($ligne, 806 , 50 ); // Adresse de l'établissement : Libellé de la voie + $adrEnCp= substr($ligne, 946 , 5 ); // Code Postal de l'établissement + $adrEnVille=substr($ligne, 951 , 45 ); // Ville de l'établissement + + $numRC = trim(substr($ligne, 95 , 9 )); // Numéro de RC (Registre du Commerce) de l'entreprise + $raisonS= trim(substr($ligne, 104 , 150 )); // Raison sociale de l'entreprise + $even=array(); + $even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN + $even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN + $even[5]= substr($ligne, 1004, 4 )*1; // Code Evènement Bodacc n°3 Cf. Table EVEN + $even[4]= substr($ligne, 1008, 4 )*1; // Code Evènement Bodacc n°4 Cf. Table EVEN + $even[3]= substr($ligne, 1012, 4 )*1; // Code Evènement Bodacc n°5 Cf. Table EVEN + $even[2]= substr($ligne, 1016, 4 )*1; // Code Evènement Bodacc n°6 Cf. Table EVEN + $even[1]= substr($ligne, 1020, 4 )*1; // Code Evènement Bodacc n°7 Cf. Table EVEN + $even[0]= substr($ligne, 1024, 4 )*1; // Code Evènement Bodacc n°8 Cf. Table EVEN + $txtEven=''; + foreach ($even as $codeEven) + if ($codeEven<>0) { + $txtEven.=$iBodacc->getEvenement($codeEven).', '; + $catEven=$iBodacc->getChapitreEvenement($codeEven); + } + else + $txtEven.=''; + if ($catEven=='procol') { + switch($codeEven) { + case 1050: + case 1055: $procol['CONC']++; $procoltot['CONC']++; break; + case 1100: $procol['SAUV']++; $procoltot['SAUV']++; break; + case 1200: + case 1201: + case 1211: + case 1212: $procol['RJ']++; $procoltot['RJ']++; break; + case 1300: + case 1301: + case 1302: + case 1303: + case 1304: + case 1305: + case 1306: + case 1307: + case 1311: + case 1312: + case 1313: $procol['LJ']++; $procoltot['LJ']++; break; + default: $procol['SUITE']++; $procoltot['SUITE']++; break; + } + } + @$ligne100chap[$catEven]++; + @$ligne100chaptot[$catEven]++; + $txtEven=substr($txtEven,0,strlen($txtEven)-2); + $txtAnn=''; + $ecrireLignePre=true; + break; + case 104: // Annonce + $ligne104++; + $ligne104tot++; + $txtAnn=trim($txtAnn.' '.str_replace(';','.',trim(substr($ligne, 89 , 1910)))); // Texte Annonce + break; + case 999: // Ligne ignorée + if ($csvId) { + $ligneOut ="$siren;$nic;$codeTri;$libTri;$numRC;$actifEt;$siege;$raisonS;$nomCom;$enseigne;$sigle;"; + $ligneOut.="$adrEtNum;$adrEtBtq;$adrEtTypV;$adrEtVoie;$adrEtComp;$adrEtDisp;$adrEtCp;$adrEtVille;$adrEtPays;"; + $ligneOut.="$capital $capitalDev;$cj;$civilite;$nbEtab;$dateMaj;$sitJur;$depCom;$rivoli;$iris;$ilot;$indDom;"; + $ligneOut.="$tel;$fax;$web;$mail;$auxil;$saisonat;$activnat;$origine;$typexploit;$lieuact;$actisurf;$prodpart;"; + $ligneOut.="$arronet;$ctonet;$tcd;$zemet;$du;$tu;$uu;$dcret;$apet;$nacet;$dapet;$effet;$teffet;"; + $ligneOut.="$defet;$modet;$explet;$rpet;$dreactet;$dateferet;$eaeant;$eaeapet;$eaesec1t;$eaesec2t;"; + $ligneOut.="$dcren;$apen;$nacen;$dapen;$effen;$teffen;$moden;$explen;$rpen;$dreacten;$dateferen;$dateImma;$dateRad;$tca;$tcaExp;"; + $ligneOut.="$zus;$zru;$zfu;$cucs;$afr;$zrr;$tva;$isin;$dir1nom;$dir1prenom;$dir1cfct;$dir2nom;$dir2prenom;$dir2cfct;"; + $ligneOut.="$bilanClot;$bilanDuree;$bilanCA;$bilanRES"; + } elseif ($csvAnn) + $ligneOut="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn"; + $ligne999++; + $ligne999tot++; + $ecrireLignePre=true; + break; + default: // Ligne non gérée + break; + } + if ($ecrireLignePre) + fwrite($fp, $ligneOut.EOL); + if ($ajoutNic && ($typeLigne==1 || $typeLigne==999 || $catEven=='procol' || + ($catEven<>'comptes' && + (preg_match('/VITRY.*SEINE/i', $adrEtVille) || preg_match('/VITRY.*SEINE/i', $adrEnVille))) + )) { + // $nic=0; + if ($siren*1>1000) { + $tabEt=$iInsee->getEtablissements($siren, '', 0, 200, 200, 94); + //print_r($tabEt); + //die(); + } + if ($tabEt['nbReponsesTotal']==1) { + // 1 seul établissement connu : on le valide en auto @todo : Vérifier adresser + $nic=$tabEt['reponses'][0]['Nic']; + } elseif ($tabEt['nbReponsesTotal']==0) { + continue; + } else { + $nicTrouve=$nbNic=0; + foreach ($tabEt['reponses'] as $iEt=>$tabIdEt) { + $villeRec=$tabIdEt['Ville']; + $numRec=substr($tabIdEt['Adresse'],0,4)*1; + $numDemEt=$adrEtNum*1; + $numDemEn=$adrEnNum*1; + if (($numDemEt==0 && $numDemEn==0) || $numRec==0) continue; + if ($numDemEt==$numRec && preg_match('/VITRY.*SEINE/i', $villeRec)) { + $nicTrouve=$tabIdEt['Nic']; + $nbNic++; + } elseif ($numDemEn==$numRec && preg_match('/VITRY.*SEINE/i', $villeRec)) { + $nicTrouve=$tabIdEt['Nic']; + $nbNic++; + } + } + //if ($nbNic==1) { + $nic=$nicTrouve; + //} + } + + echo substr($ligne,0,22).initstr($nic*1,5,'0',ALIGN_RIGHT).substr($ligne,27,2000); + } + } + if ($ajoutNic) echo EOL; + fclose($fp); + if ($verbose) echo date ('Y/m/d - H:i:s')." - Conversion terminée de $fichier ($ligne100 annonces)" . EOL; + elseif ($sortieCSV) { + echo "$fichier;$ligne100;"; + foreach ($ligne100chap as $chap=>$nb) echo "$nb;"; + foreach ($procol as $chap=>$nb) echo "$nb;"; + echo EOL; + } +} + +if ($sortieCSV) { + echo "$iFic fichiers;$ligne100tot;"; + foreach ($ligne100chaptot as $chap=>$nb) echo "$nb;"; + foreach ($procoltot as $chap=>$nb) echo "$nb;"; + echo EOL; +} else +echo date ('Y/m/d - H:i:s')." - Conversion terminée : $iFic fichiers, $ligne001tot entêtes, $ligne200tot etab., $ligne100tot annonces, $ligne104tot lignes de texte, $ligne999tot fin de fichier !" . EOL; + +die(); + + ?> \ No newline at end of file diff --git a/bin/convertSdFBoissons.php b/bin/convertSdFBoissons.php new file mode 100644 index 00000000..be31caad --- /dev/null +++ b/bin/convertSdFBoissons.php @@ -0,0 +1,448 @@ +#!/usr/bin/php +'fb.ne.contentieux@heineken.fr,stephane.bisiaux@france-boissons.fr,sylvain.michoux@france-boissons.fr', + 'ST0C'=>'fb.ne.contentieux@heineken.fr,eric.gerbaud@france-boissons.fr,sylvain.michoux@france-boissons.fr', + 'ST0D'=>'fb.ne.contentieux@heineken.fr,severine.poulain@france-boissons.fr,sylvain.michoux@france-boissons.fr', + 'ST0E'=>'fb.ne.contentieux@heineken.fr,eric.debuyzer@france-boissons.fr,sylvain.michoux@france-boissons.fr', + 'ST0F'=>'fb.ne.contentieux@heineken.fr,sylvain.michoux@france-boissons.fr', + 'ST05'=>'fb.ne.contentieux@heineken.fr,dominique.husson@france-boissons.fr,sylvain.michoux@france-boissons.fr', + 'ST06'=>'fb.ne.contentieux@heineken.fr,nathalie.heyer@france-boissons.fr,sylvain.michoux@france-boissons.fr', + 'ST07'=>'fb.ne.contentieux@heineken.fr,annick.guyot@france-boissons.fr,sylvain.michoux@france-boissons.fr', + 'ST08'=>'fb.ne.contentieux@heineken.fr,annick.guyot@france-boissons.fr,sylvain.michoux@france-boissons.fr', + 'ST00'=>'fb.ne.contentieux@heineken.fr,valerie.baechler@france-boissons.fr,sylvain.michoux@france-boissons.fr', + 'ST0A'=>'fb.ne.contentieux@heineken.fr,valerie.baechler@france-boissons.fr,sylvain.michoux@france-boissons.fr', + 'ST09'=>'fb.ne.contentieux@heineken.fr,laurence.hassler@france-boissons.fr,sylvain.michoux@france-boissons.fr', +// Région BRETAGNE NORMANDIE + 'SJ04'=>'fb.bn.contentieux@heineken.fr,marie-francoise.beneat@france-boissons.fr,christian.tesson@france-boissons.fr', //thierry.hacques@france-boissons.fr,linda.bourges fb.bn.contentieux@heineken.fr,thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr + 'SJ0A'=>'fb.bn.contentieux@heineken.fr,celine.dorion@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges + 'SJ0C'=>'fb.bn.contentieux@heineken.fr,celine.dorion@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr', + 'SJ0D'=>'fb.bn.contentieux@heineken.fr,celine.dorion@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr', + 'SJ06'=>'fb.bn.contentieux@heineken.fr,angelique.thomas@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques,linda.bourges@france-boissons.fr', + 'SJ07'=>'fb.bn.contentieux@heineken.fr,thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr', + 'SJ05'=>'fb.bn.contentieux@heineken.fr,genevieve.gales@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr', + 'SJ00'=>'fb.bn.contentieux@heineken.fr,nadine.dutheil@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr + 'SJ08'=>'fb.bn.contentieux@heineken.fr,nadine.dutheil@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@france-boissons.fr', + 'SJ09'=>'fb.bn.contentieux@heineken.fr,denise.gillard@france-boissons.fr,christian.tesson@france-boissons.fr', // thierry.hacques@france-boissons.fr,linda.bourges@ +// Région ILE DE FRANCE + 'NO00'=>'francoise.andre@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr', + 'NO02'=>'francoise.andre@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr', + 'NO04'=>'amandine.vergnaud@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr', + 'NO06'=>'annie.bontemps@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr', + 'NO0E'=>'murielle.pinte@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr', + 'NO0F'=>'laurence.braquehais@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr', + 'NO0G'=>'catherine.simon@france-boissons.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr', + 'PB00'=>'fabrice.amriou@sabertrand.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr', + 'PB01'=>'fabrice.amriou@sabertrand.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr', + 'PB02'=>'fabrice.amriou@sabertrand.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr', + 'PB03'=>'fabrice.amriou@sabertrand.fr,fb.idf.contentieux@heineken.fr,ctx-idf@france-boissons.fr', + 'PB0A'=>'fb.idf.contentieux@heineken.fr', + 'PB0C'=>'fb.idf.contentieux@heineken.fr', + 'PB0D'=>'fb.idf.contentieux@heineken.fr', + 'PB0E'=>'fb.idf.contentieux@heineken.fr', + 'PB0F'=>'fb.idf.contentieux@heineken.fr', + 'PB0G'=>'fb.idf.contentieux@heineken.fr', + +// LOIRE SUD OUEST + 'BO00'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO01'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO02'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO03'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO04'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO05'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO06'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO07'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO08'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO09'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO0B'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO0C'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO0D'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO0E'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO0F'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO0G'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO0H'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO0I'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO0J'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO0K'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', + 'BO0L'=>'fb.lso.contentieux@heineken.fr,sabine.ageon@france-boissons.fr,christian.tesson@france-boissons.fr,martine.desgrippes@france-boissons.fr', +// Région CENTRE RHONE ALPES + 'LY05'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,sylvie.lambert@france-boissons.fr', + 'LY06'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,sylvie.lambert@france-boissons.fr', + 'LY07'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,sylvie.lambert@france-boissons.fr', + 'LY08'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,virginie.charbonnier@france-boissons.fr', + 'LY0A'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,virginie.charbonnier@france-boissons.fr', + 'LY0B'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,virginie.charbonnier@france-boissons.fr', + 'LY0C'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,virginie.charbonnier@france-boissons.fr', + 'LY0E'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr', + 'LY0H'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr', + 'LY0I'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr', + 'LY0J'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr', + 'LY0L'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr', + 'LY0M'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr', + 'LY0P'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr', + 'LY0Q'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr', + 'LY0R'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr', + 'LY0V'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr', + 'LY00'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,nathalie.rodier@france-boissons.fr,virginie.charbonnier@france-boissons.fr', + // Ajouté le 05/11/2013 pour CRA + 'LE00'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr', + 'LE05'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr', + 'LE06'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr', + 'LE07'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr', + 'LE08'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr', + 'LE09'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr', +// Région SUD EST + 'LY0F'=>'fb.cra.contentieux@heineken.fr,CTX-CRA@france-boissons.fr,fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA00'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA01'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA02'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA03'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA04'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA0B'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA0C'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA0D'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA0F'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA0H'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA0I'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA0J'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA0L'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA0M'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MA0T'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', + 'MO00'=>'fatiha.daifi@france-boissons.fr,fb.sudest.contentieux@heineken.fr', +); + +/** + * @todo + * 1. Numéroter toutes les procédures OK + * 2. Pouvoir faire du multiligne avec : 100 Annonce Bodacc + * 101 Commentaire + * 102 Activite déclaré au Bodacc + * 103 texte rectificatif + * 104 Annonce complète au format texte + * 105 Structure Dirigeants BODACC + * 106 Libellé du Périmètre de la vente + * 3. + * 5. JugesCommissaires à intégrer correctement + + Noms et prénoms des dirigeants de l'entreprise ' Anum. ? + + Raison sociale du vendeur Anum. 255 + Siren du vendeur (en cas de Vente/Cessions) Num. 9 + Indicateur de correction du SIREN vendeur (si C, le siren diffusé au BODACC est faut mais S&D a affecté le bon SIREN) ' Car. 1 + */ +include_once(FWK_PATH.'common/chiffres.php'); +include_once(FWK_PATH.'common/dates.php'); +include_once(INCLUDE_PATH.'bodacc/classMBodacc.php'); +include_once(FWK_PATH.'mail/sendMail.php'); + +$iBodacc=new MBodacc(); + +$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] +Conversion d'un flux surveillance/diffusion Bodacc S&D en fichier spécifique Bouchara-Recordati. + +";/*Options : +-d Clients en Diffusion Bodacc (par défaut) +-s Clients en Surveillance Bodacc +-e Ne pas tenir compte de la date de dernière exécution du script +-i Ne pas incrémenter les numéros de tour (pour les tests). +";*/ + +$tabFichLigneCmd=$tabFichier=array(); +$sortieCSV=true; + +$argv=$_SERVER['argv']; +for ($i=1; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (substr($argv[$i],1,1)) { + case '-': + case '?': + die($strInfoScript); + break; + default: + die('Option '. $argv[$i] . " inconnue !\n"); + break; + } + } else $tabFichLigneCmd[]=$argv[$i]; +} +if (count($tabFichLigneCmd)==0) { + $dh = opendir(PROD_PATH); + while (false !== ($filename = readdir($dh))) { + if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.txt' && + substr($filename, 0,40)=='surveillanceBodacc_SURBODPRDFTPFBOISSON_') + $tabFichier[] = $filename; + } + sort($tabFichier); +} else $tabFichier=$tabFichLigneCmd; + +if (count($tabFichier)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier France Boisson à traiter !".EOL); +//print_r($tabFichier); +//die(); +$ligne001tot=$ligne100tot=$ligne104tot=$ligne999tot=0; +$ligne100chaptot=array('comptes'=>0, 'creations'=>0, 'mmd'=>0, 'procol'=>0, 'radiations'=>0, 'ventes'=>0); +$procoltot=array('CONC'=>0, 'SAUV'=>0, 'RJ'=>0, 'LJ'=>0, 'SUITE'=>0); + +for ($iFic=0; isset($tabFichier[$iFic]); $iFic++) +{ + $nomFichier =$tabFichier[$iFic]; + + $ligne001=$ligne100=$ligne104=$ligne999=0; + $ligne100chap=array('comptes'=>0, 'creations'=>0, 'mmd'=>0, 'procol'=>0, 'radiations'=>0, 'ventes'=>0); + $procol=array('CONC'=>0, 'SAUV'=>0, 'RJ'=>0, 'LJ'=>0, 'SUITE'=>0); + $tabLignes=file(PROD_PATH.$nomFichier); + $message=$tabNbAnn=array(); + $lignesCsv=array(); + + foreach ($tabLignes as $i=>$ligne) { + $ecrireLignePre=false; + $typeLigne=substr($ligne, 0, 3)*1; + switch ($typeLigne) { + case 1: // Ligne ignorée + // Ecriture de l'entête + $siren ='Siren'; + $nic ='Nic'; + $ref ='Référence'; + $numPar ='Parution'; + $bodacc ='Bodacc'; + $datePar='Date parution'; + $numAnn ='Numéro Annonce'; + $cor ='Type Annonce'; + $libTri ='Tribunal'; + $numRC ='Numéro RCS'; + $raisonS='Raison sociale'; + $catEven='Chapitre'; + $txtEven='Evènement(s)'; + $txtAnn ='Texte Annonce'; + + $ligneOut=''; + $ligne001++; + $ligne001tot++; + break; + case 100: // Structure Bodacc + $lignesCsv[$ref1][]="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn"; + + // Mail de surveillance + $sirenAff=implode(' ', str_split($siren,3)); + $message[$ref1].="Siren : $sirenAff\r\n".'Raison Sociale : '.$raisonS."\r\n"; + if (trim($ref)<>'') + $message[$ref1].="Votre référence : $ref\r\n"; + $message[$ref1].="Source : BODACC n°$numPar $bodacc du $datePar. "; + if (trim($dateInsert)<>'') + $message[$ref1].='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n"; + $message[$ref1].="Tribunal : $libTri"."\r\n"; + $message[$ref1].="\r\n"; + $message[$ref1].="$txtEven"."\r\n"; + $message[$ref1].="\r\n"; + $message[$ref1].=$txtAnn."\r\n"; + $message[$ref1].="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n"; + + $ligne100++; + $ligne100tot++; + + $siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce + $nic = trim(substr($ligne, 22, 5 )); // Nic + $ref = trim(substr($ligne, 71, 18 )); // Référence Client + $ref=explode('-',$ref); + $ref1=$ref[1]; + $ref=$ref[0]; + + if (!isset($message[$ref1]) || @$message[$ref1]=='') { + //$fp[$ref1]=fopen(DIR_RECORDATI_IN.$nomFichier."-$ref1.csv", 'w'); + //fwrite($fp[$ref1], 'Siren;Nic;Référence;Parution;Bodacc;Date parution;Numéro Annonce;Type Annonce;Tribunal;Numéro RCS;Raison sociale;Chapitre;Evènement(s);Texte Annonce'.EOL); + $message[$ref1]='Bonjour, + +Veuillez trouver ci-joint la liste des modifications relatives à votre abonnement Scores & Décisions. + +'; + } + @$tabNbAnn[$ref1]++; + + // die(EOL."$ref1\t$ref2".EOL); + + $numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année + $bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C + $datePar= WDate::dateT('Ymd','d/M/Y',substr($ligne,31,8)); // Date de parution du Bodacc Format AAAAMMJJ + $numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc + $typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce + $corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion + $corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ + $corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion + $corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion + $cor=''; + if ($typeAnn<>'I') + $cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate); + switch($typeAnn) { + case 'I': $cor='Insertion'.$cor; break; + case 'A': $cor='Additif'.$cor; break; + case 'R': $cor='Rectificatif'.$cor; break; + case 'S': $cor='Suppression'.$cor; break; + default: break; + } + $codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc + $libTri=$iBodacc->getTribunalNom($codeTri); + + $adrEtNum= substr($ligne, 596 , 4 ); // Adresse de l'établissement : Numéro dans la voie + $adrEtVoie= substr($ligne, 606 , 50 ); // Adresse de l'établissement : Libellé de la voie + $adrEtCp= substr($ligne, 746 , 5 ); // Code Postal de l'établissement + $adrEtVille=substr($ligne, 751 , 45 ); // Ville de l'établissement + $adrEnNum= substr($ligne, 796 , 4 ); // Adresse de l'établissement : Numéro dans la voie + $adrEnVoie= substr($ligne, 806 , 50 ); // Adresse de l'établissement : Libellé de la voie + $adrEnCp= substr($ligne, 946 , 5 ); // Code Postal de l'établissement + $adrEnVille=substr($ligne, 951 , 45 ); // Ville de l'établissement + $adresse= trim(preg_replace('/ +/',' ',substr($ligne, 596 , 4 ).' '. + substr($ligne, 600 , 1 ).' '. + substr($ligne, 601 , 5 ).' '. + substr($ligne, 606 , 50 ).' '. + substr($ligne, 656 , 50 ).' '. + substr($ligne, 706 , 40 ).', '. + substr($ligne, 746 , 5 ).' '. + substr($ligne, 751 , 45 ))); + $venteDt= WDate::dateT('Ymd','d/m/Y',substr($ligne,1161,8)); + $venteMt= substr($ligne, 1169 , 15 ); + $venteDev=substr($ligne, 1184 , 3 ); + $dateInsert=substr($ligne, 1910 , 8 ); + + $numRC = trim(substr($ligne, 95 , 9 )); // Numéro de RC (Registre du Commerce) de l'entreprise + $raisonS= trim(substr($ligne, 104 , 150 )); // Raison sociale de l'entreprise + $even=array(); + $even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN + $even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN + $even[5]= substr($ligne, 1004, 4 )*1; // Code Evènement Bodacc n°3 Cf. Table EVEN + $even[4]= substr($ligne, 1008, 4 )*1; // Code Evènement Bodacc n°4 Cf. Table EVEN + $even[3]= substr($ligne, 1012, 4 )*1; // Code Evènement Bodacc n°5 Cf. Table EVEN + $even[2]= substr($ligne, 1016, 4 )*1; // Code Evènement Bodacc n°6 Cf. Table EVEN + $even[1]= substr($ligne, 1020, 4 )*1; // Code Evènement Bodacc n°7 Cf. Table EVEN + $even[0]= substr($ligne, 1024, 4 )*1; // Code Evènement Bodacc n°8 Cf. Table EVEN + $txtEven=''; + foreach ($even as $codeEven) + if ($codeEven<>0) { + $txtEven.=$iBodacc->getEvenement($codeEven).', '; + $catEven=$iBodacc->getChapitreEvenement($codeEven); + } + else + $txtEven.=''; + if ($catEven=='procol') { + switch($codeEven) { + case 1050: + case 1055: $procol['CONC']++; $procoltot['CONC']++; break; + case 1100: $procol['SAUV']++; $procoltot['SAUV']++; break; + case 1200: + case 1201: + case 1211: + case 1212: $procol['RJ']++; $procoltot['RJ']++; break; + case 1300: + case 1301: + case 1302: + case 1303: + case 1304: + case 1305: + case 1306: + case 1307: + case 1311: + case 1312: + case 1313: $procol['LJ']++; $procoltot['LJ']++; break; + default: $procol['SUITE']++; $procoltot['SUITE']++; break; + } + } + @$ligne100chap[$catEven]++; + @$ligne100chaptot[$catEven]++; + $txtEven=substr($txtEven,0,strlen($txtEven)-2); + $txtAnn=''; + break; + case 104: // Annonce + $ligne104++; + $ligne104tot++; + $txtAnn=trim($txtAnn.' '.str_replace(';','.',trim(substr($ligne, 89 , 1910)))); // Texte Annonce + break; + case 999: // Ligne ignorée + $lignesCsv[$ref1][]="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn"; + + // Mail de surveillance + $sirenAff=implode(' ', str_split($siren,3)); + $message[$ref1].="Siren : $sirenAff\r\n".'Raison Sociale : '.$raisonS."\r\n"; + if (trim($ref)<>'') + $message[$ref1].="Votre référence : $ref\r\n"; + $message[$ref1].="Source : BODACC n°$numPar $bodacc du $datePar. "; + if (trim($dateInsert)<>'') + $message[$ref1].='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n"; + $message[$ref1].="Tribunal : $libTri"."\r\n"; + $message[$ref1].="\r\n"; + $message[$ref1].="$txtEven"."\r\n"; + $message[$ref1].="\r\n"; + $message[$ref1].=$txtAnn."\r\n"; + $message[$ref1].="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n"; + + $ligne999++; + $ligne999tot++; + break; + default: // Ligne non gérée + break; + } + } + + print_r($message); + foreach ($message as $ref=>$msg) { + if ($ref<>'') { + // Ecriture des CSV + $fp=fopen(PROD_PATH.$nomFichier."-$ref.csv", 'w'); + fwrite($fp, 'Siren;Nic;Référence;Parution;Bodacc;Date parution;Numéro Annonce;Type Annonce;Tribunal;Numéro RCS;Raison sociale;Chapitre;Evènement(s);Texte Annonce'.EOL); + foreach ($lignesCsv[$ref] as $iLigne=>$ligneCsv) { + fwrite($fp, $ligneCsv.EOL); + } + fclose($fp); + copy(PROD_PATH.$nomFichier."-$ref.csv", REP_TEMP.'Sed_FBoissons_'.date('Ymd')."_$ref.csv"); + @move(PROD_PATH.$nomFichier."-$ref.csv", CLIENTS_PATH.'/france boissons/'.$nomFichier."-$ref.csv"); + + $tabAttached=array(REP_TEMP.'Sed_FBoissons_'.date('Ymd')."_$ref.csv"); + // Envoi des mails + if (isset($tabMailDepot[$ref]) && $tabMailDepot[$ref]<>'') { + @sendMail('infoslegales@scores-decisions.com', $tabMailDepot[$ref].',support@scores-decisions.com', "Surveillance Annonces Legales (S&D/FrBoissons $ref)", $msg, '', $tabAttached); + $azerty=0; + } + elseif (!isset($tabMailDepot[$ref]) || $tabMailDepot[$ref]=='') { + $msg="ATTENTION, CE DEPOT N'A PAS DE MAIL RENSEIGNE !".EOL.EOL.$msg; + @sendMail('infoslegales@scores-decisions.com', 'flora.durandeau@france-boissons.fr,emmanuel.przystaniak@france-boissons.fr,support@scores-decisions.com', "Surveillance Annonces Legales (S&D/FrBoissons $ref)", "ATTENTION, CE DEPOT N'A PAS DE MAIL RENSEIGNE !".EOL.EOL.$msg, '', $tabAttached); + $azerty=0; + } + $nbAnnTmp=$tabNbAnn[$ref]; + @$nbAnnTot+=$nbAnnTmp; + @sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Annonces Legales (S&D/FrBoissons $ref)", $msg.EOL.EOL.date('Y/m/d H:i:s'). + " - Les $nbAnnTmp annonce(s) ont été envoyés à ".$tabMailDepot[$ref]." (Dépôt n°$ref).", '', $tabAttached); + @$nbDepots++; + + @unlink(REP_TEMP.'Sed_FBoissons_'.date('Ymd')."_$ref.csv"); + } + } + + if ($verbose) echo date ('Y/m/d - H:i:s')." - Conversion terminée de $nomFichier ($ligne100 annonces sur $nbDepots dépôts)" . EOL; + elseif ($sortieCSV) { + echo "$nomFichier;$ligne100;"; + foreach ($ligne100chap as $chap=>$nb) echo "$nb;"; + foreach ($procol as $chap=>$nb) echo "$nb;"; + echo EOL; + } + + @sendMail('infoslegales@scores-decisions.com', 'support@scores-decisions.com,ylenaour@scores-decisions.com', "Surveillance Annonces Legales (S&D/FrBoissons)", $msgGlobal.EOL.EOL.date('Y/m/d H:i:s'). + " - Les $nbAnnTot/$ligne100tot annonce(s) ont été envoyés aux $nbDepots dépôts."); + + if (bzip2(PROD_PATH.$nomFichier, PROD_PATH.$nomFichier)) { + unlink(PROD_PATH.$nomFichier); + echo date ('Y/m/d - H:i:s') . " - Le fichier n°$i, $nomFichier vient d'être historisé.".EOL; + } + +} + +if ($sortieCSV) { + echo "$iFic fichiers;$ligne100tot;"; + foreach ($ligne100chaptot as $chap=>$nb) echo "$nb;"; + foreach ($procoltot as $chap=>$nb) echo "$nb;"; + echo EOL; +} else +echo date ('Y/m/d - H:i:s')." - Conversion terminée : $iFic fichiers, $ligne001tot entêtes, $ligne100tot annonces, $ligne104tot lignes de texte, $ligne999tot fin de fichier !" . EOL; + +die(); + +?> \ No newline at end of file diff --git a/bin/convertSdRecordati.php b/bin/convertSdRecordati.php new file mode 100644 index 00000000..81b9c2f4 --- /dev/null +++ b/bin/convertSdRecordati.php @@ -0,0 +1,322 @@ +#!/usr/bin/php +'.' && $filename<>'..' && substr($filename, -4)=='.txt' && + substr($filename, 0,34)=='diffusionBodacc_DIFBODPRDMAIRECORD') + $tabFichier[] = $filename; + } + sort($tabFichier); +} else $tabFichier=$tabFichLigneCmd; + +if (count($tabFichier)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier Recordati à traiter !".EOL); +//print_r($tabFichier); +//die(); + +for ($iFic=0; isset($tabFichier[$iFic]); $iFic++) +{ + $nomFichier =$tabFichier[$iFic]; + + $ligne001=$ligne100=$ligne104=$ligne999=0; + + $tabLignes=file(PROD_PATH.$nomFichier); + $fp=fopen(PROD_PATH.$nomFichier.'.csv', 'w'); + $message=''; + +foreach ($tabLignes as $i=>$ligne) { + $ecrireLignePre=false; + $typeLigne=substr($ligne, 0, 3)*1; + switch ($typeLigne) { + case 1: // Ligne ignorée + // Ecriture de l'entête + $idannPre ='Identifiant Annonce'; + $siren ='Siren'; + $nic ='Nic'; + $ref ='Référence'; + $numPar ='Parution'; + $bodacc ='Bodacc'; + $datePar='Date parution'; + $numAnn ='Numéro Annonce'; + $cor ='Type Annonce'; + $libTri ='Tribunal'; + $numRC ='Numéro RCS'; + $raisonS='Raison sociale'; + $catEven='Chapitre'; + $txtEven='Evènement(s)'; + $txtAnn ='Texte Annonce'; + $inter ='Acheteur/Vendeur'; + $sirenV ='Siren Vendeur'; + $raisonSV='Nom Vendeur'; + $sirenA ='Siren Acheteur'; + $raisonSA='Nom Acheteur'; + $adresseFond='Adresse du fond'; + $montantVente='Montant de la vente'; + $deviseVente='Devise'; + $dateVente='Date de la vente'; + $opposition=$txtAnn='Opposition'; + + $ligne001++; + break; + case 100: // Structure Bodacc + + /*Identité du vendeur Rubrique Siren acheteur Raison Sociale Adresse du fonds */ + $ligne100++; + $idann = substr($ligne, 3 , 10 )*1; // Id interne de l'annonce S&D + if ($idannPre<>$idann) { + /** Recherche de l'oppositions + **/ + if (preg_match('/Oppositions(?: )\:(.*)(?:Commentaires|\.$)/Uis', $txtAnn, $matches)) + $opposition=trim($matches[1]); + /** Rechercher du montant de la vente + **/ + if (preg_match("/(?:prix|montant|indémni|indemni|évalu|evalu|éstim|estim)\D{1,15}([0-9\.,\?\s ]*)(?:eur|euro|euros)/i", $txtAnn, $matches)) { + $montantVente=''.trim($matches[1]); + echo "Montant de la vente AV: $montantVente\n"; + if (substr($montantVente,-3,1)==',') { + $montantVente=substr($montantVente,0,strlen($montantVente)-3); + // echo "ICI1\n"; + } + elseif (substr($montantVente,-3,1)=='.') { + echo "'".substr($montantVente,-3,3)."'\n"; + $montantVente=substr($montantVente,0,strlen($montantVente)-3); + // echo "ICI2\n"; + } + $montantVente=strtr($montantVente,array('.'=>'',','=>'',' '=>'')); + + $deviseVente='EUR'; + //echo "Montant de la vente AP: $montantVente\n"; + } + /** Recherche de la date de la vente + **/ + if ($dateVente=='00/00/0000') { + if (preg_match_all("/([0-9].{1,3})(janvier|f.vrier|mars|avril|mai|juin|juillet|ao.t|septembre|octobre|novembre|d.cembre).{1,2}([0-9]{4,4})/i", $txtAnn, $matches)) { + //print_r($matches); + //echo "Date de la vente : $dateVente\n"; + $dateVente=end($matches[0]); + //die($txtAnn); + } + } + if ($catEven=='procol') { + $adresseFond=$adresse; + if (preg_match('/Complément de jugement(?: )\:(.*)$/Uis', $txtAnn, $matches)) + $opposition=trim($matches[1]); + else + $opposition=''; + } + + $ligneOut="$idannPre;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$opposition;$txtAnn"; + + if ($idannPre<>'Identifiant Annonce') { + $sirenAffV=implode(' ', str_split($sirenV,3)); + if ($sirenA*1>0) $sirenAffA='(Siren : '.implode(' ', str_split($sirenA,3)).')'; + else $sirenAffA=''; + $message.="Siren : $sirenAffV\r\n".'Raison Sociale : '.$raisonSV."\r\n"; + $message.="Source : BODACC n°$numPar $bodacc du $datePar. "; + if (trim($dateInsert)<>'') + $message.='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n"; + $message.="Tribunal : $libTri"."\r\n"; + $message.="\r\n"; + if (trim($raisonSA)<>'') { + $message.="Acheteur : $raisonSA $sirenAffA"."\r\n"; + if ($montantVente*1>0) + $message.="Montant de la vente : $montantVente $deviseVente en date du $dateVente."."\r\n"; + $message.="\r\n"; + } + $message.="$txtEven"."\r\n"; + $message.="\r\n"; + $message.=$txtAnn."\r\n"; + $message.="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n"; + } + $sirenA=$raisonSA=$sirenV=$raisonSV=$adresseFond=$montantVente=$deviseVente=$dateVente=''; + } + $siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce + $nic = trim(substr($ligne, 22, 5 )); // Nic + $ref = trim(substr($ligne, 71, 18 )); // Référence Client + $numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année + $bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C + $datePar= WDate::dateT('Ymd','d/m/Y',substr($ligne,31,8)); // Date de parution du Bodacc Format AAAAMMJJ + $numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc + $typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce + $corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion + $corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ + $corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion + $corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion + $adresse= trim(preg_replace('/ +/',' ',substr($ligne, 596 , 4 ).' '. + substr($ligne, 600 , 1 ).' '. + substr($ligne, 601 , 5 ).' '. + substr($ligne, 606 , 50 ).' '. + substr($ligne, 656 , 50 ).' '. + substr($ligne, 706 , 40 ).', '. + substr($ligne, 746 , 5 ).' '. + substr($ligne, 751 , 45 ))); + $venteDt= WDate::dateT('Ymd','d/m/Y',substr($ligne,1161,8)); + $venteMt= substr($ligne, 1169 , 15 ); + $venteDev=substr($ligne, 1184 , 3 ); + $dateInsert=substr($ligne, 1910 , 8 ); + + $cor=''; + if ($typeAnn<>'I') + $cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate); + switch($typeAnn) { + case 'I': $cor='Insertion'.$cor; break; + case 'A': $cor='Additif'.$cor; break; + case 'R': $cor='Rectificatif'.$cor; break; + case 'S': $cor='Suppression'.$cor; break; + default: break; + } + $codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc + $libTri=$iBodacc->getTribunalNom($codeTri); + + $numRC = trim(substr($ligne, 95 , 9 )); // Numéro de RC (Registre du Commerce) de l'entreprise + $raisonS= trim(substr($ligne, 104 , 150 )); // Raison sociale de l'entreprise + $even=array(); + $even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN + $even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN + $even[5]= substr($ligne, 1004, 4 )*1; // Code Evènement Bodacc n°3 Cf. Table EVEN + $even[4]= substr($ligne, 1008, 4 )*1; // Code Evènement Bodacc n°4 Cf. Table EVEN + $even[3]= substr($ligne, 1012, 4 )*1; // Code Evènement Bodacc n°5 Cf. Table EVEN + $even[2]= substr($ligne, 1016, 4 )*1; // Code Evènement Bodacc n°6 Cf. Table EVEN + $even[1]= substr($ligne, 1020, 4 )*1; // Code Evènement Bodacc n°7 Cf. Table EVEN + $even[0]= substr($ligne, 1024, 4 )*1; // Code Evènement Bodacc n°8 Cf. Table EVEN + $txtEven=''; + $inter='Vendeur'; // Par défaut, nous sommes avec un vendeur + foreach ($even as $codeEven) + if ($codeEven<>0) { + $txtEven.=$iBodacc->getEvenement($codeEven).', '; + $catEven=$iBodacc->getChapitreEvenement($codeEven); + if ($codeEven==5700) { + $inter='Acheteur'; // L'interlocuteur est l'acheteur ! + $sirenA=$siren; + $raisonSA=$raisonS; + $adresseFond=$adresse; + $montantVente=$venteMt; + $deviseVente=$venteDev; + $dateVente=$venteDt; + } + } + else + $txtEven.=''; + if ($inter=='Vendeur') { + $sirenV=$siren; + $raisonSV=$raisonS; + } + + $txtEven=substr($txtEven,0,strlen($txtEven)-2); + $txtAnn=''; + if ($idannPre<>$idann) $ecrireLignePre=true; + else $ecrireLignePre=false; + $idannPre=$idann; + break; + case 104: // Annonce + $ligne104++; + $txtAnn=trim($txtAnn.' '.str_replace(';','.',trim(substr($ligne, 89 , 1910)))); // Texte Annonce + break; + case 999: // Ligne ignorée + //$ligneOut="$idann;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$txtAnn"; + $opposition=preg_replace('/.*Oppositions \:/i','', $txtAnn); + $ligneOut="$idann;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$opposition;$txtAnn"; +// $ligneOut="$idann;$siren;$nic;$inter;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$txtAnn"; + if ($idann<>'Identifiant Annonce') { + $sirenAffV=implode(' ', str_split($sirenV,3)); + if ($sirenA*1>0) $sirenAffA='(Siren : '.implode(' ', str_split($sirenA,3)).')'; + else $sirenAffA=''; + $message.="Siren : $sirenAffV\r\n".'Raison Sociale : '.$raisonSV."\r\n"; + $message.="Source : BODACC n°$numPar $bodacc du $datePar. "; + if (trim($dateInsert)<>'') + $message.='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n"; + $message.="Tribunal : $libTri"."\r\n"; + $message.="\r\n"; + if (trim($raisonSA)<>'') { + $message.="Acheteur : $raisonSA $sirenAffA"."\r\n"; + if ($montantVente*1>0) + $message.="Montant de la vente : $montantVente $deviseVente en date du $dateVente."."\r\n"; + $message.="\r\n"; + } + $message.="$txtEven"."\r\n"; + $message.="\r\n"; + $message.=$txtAnn."\r\n"; + $message.="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n"; + } + $ligne999++; + $ecrireLignePre=true; + break; + default: // Ligne non gérée + break; + } + if ($ecrireLignePre) + fwrite($fp, $ligneOut.EOL); + + } + + if ($catEven<>'Chapitre') { + sendMail('infoslegales@scores-decisions.com', 'c.ferault@bouchara-recordati.fr,s.ambroise@bouchara-recordati.fr,c.jourdain@bouchara-recordati.fr,suivi@scores-decisions.com', "Surveillance Annonces Legales ($catEven)", $message); +// sendMail('infoslegales@scores-decisions.com', '', "Surveillance Annonces Legales ($catEven)", $message); + } + + fclose($fp); + + if (bzip2(PROD_PATH.$nomFichier, PROD_PATH.$nomFichier)) { + unlink(PROD_PATH.$nomFichier); + echo date ('Y/m/d - H:i:s') . " - Le fichier n°$i, $nomFichier vient d'être historisé.".EOL; + } +} +echo date ('Y/m/d - H:i:s')." - Conversion terminée !" . EOL; +die(); + +?> \ No newline at end of file diff --git a/bin/convertSdSofid.php b/bin/convertSdSofid.php new file mode 100644 index 00000000..bab96f1f --- /dev/null +++ b/bin/convertSdSofid.php @@ -0,0 +1,820 @@ +#!/usr/bin/php +'CR', + 11=>'CR', + 13=>'CR', + 14=>'CR', + 15=>'CR', + 16=>'CR', + 17=>'CR', + 18=>'CR', + 19=>'CR', + 20=>'VT', + 21=>'VT', + 22=>'VT', + 24=>'VT', + 25=>'VT', + 30=>'CE', + 31=>'ME', + 32=>'ME', + 33=>'ME', + 34=>'ME', + 35=>'Rec', + 36=>'MAF', + 37=>'LG', + 38=>'LG', + 39=>'MD', + 40=>'RD', + 41=>'DIS', + 42=>'FLG', + 51=>'RJ', + 52=>'RJ', + 53=>'RA', + 56=>'PIE', + 57=>'SAUVJ', + 58=>'SAUVP', + 59=>'RR', + 60=>'R&L', + 61=>'LB', + 62=>'LJ', + 63=>'FP', + 64=>'INT', + 65=>'LQ', + 69=>'RL', + 70=>'Suite', + 71=>'SRJ', + 72=>'SRLJ', + 73=>'SP', + 74=>'AP', + 75=>'MP', + 76=>'EP', + 77=>'PRO', + 78=>'DC', + 79=>'CIA', + 80=>'INFR'); + + +$tabEven2SO=array( // PROCOL + 1010=>92, // Déclaration de cessation de paiement + 1050=>70, // Homologation de la conciliation + 1055=>70, // Résolution de la conciliation + 1100=>57, // Jugement de sauvegarde + 1101=>58, // Plan de sauvegarde + 1200=>52, // Redressement Judiciaire + 1201=>52, // Conversion sauvegarde en Redressement Judiciaire + 1202=>75, // Renouv. Periode Observation + 1203=>78, // Avis de dépot de l'état de collocation + 1204=>78, // Dépôt des créances + 1205=>78, + 1206=>78, + 1207=>53, // Règlemement amiable + 1208=>78, + 1209=>51, // Règlement Judiciaire + 1210=>77, // Production + 1211=>52, // Redressement Judiciaire par extension au(x) gérant(s) + 1212=>69, // Rectif ou Annul.LJ + 1214=>78, // Avis de dépôt de l'état des créances (Loi de 1985) + 1215=>70, // Jugement de désignation des organes de la procédure + 1216=>78, // Autre avis de dépôt + 1300=>62, // Conversion Redressement Judiciaire en Liquidation + 1301=>62, // Ouverture Liquidation Judiciaire + 1302=>66, // Ouverture Liquidation Judiciaire Simplifiée + 1303=>62, // Ouverture Liquidation Judiciaire sur résolution + 1304=>62, // Réouverture Liquidation Judiciaire + 1305=>62, // Liquidation Judiciaire + 1306=>66, // Liquidation Judiciaire simplifiée + 1307=>62, // Conversion sauvegarde en Liquidation Judiciaire + 1308=>62, // Fin du régime de Liquidation Judiciaire Simplifiée + 1309=>62, // Conversion Liquidation Judiciaire en Liquidation + 1310=>56, // Procédure d'Insolvabilité Européenne + 1311=>62, // Liquidation Judiciaire par extension au(x) gérants + 1312=>62, // Liquidation Judiciaire avec continuation d'exploitation + 1313=>62, // Liquidation Judiciaire sans remise des accessoires + 1346=>70, // Procédure d'insolvabilité (Règlement 1346/2000 du Conseil Européen) + 1400=>70, // Nomination d'un administrateur judiciaire + 1401=>70, // Nomination d'un mandataire judiciaire + 1402=>70, // Nomination d'un représentant des créanciers + 1403=>70, // Nominnation/Remplacement de commissaire à l'exécution du plan + 1404=>70, // Prolongement de la mission du commissaire à l'exécution du plan + 1405=>70, // Nomination d'un juge commissaire + 1406=>70, // Changement de SYNDIC + 1407=>75, // Modif. de Plan + 1408=>75, // Modification du plan de cession + 1409=>75, // Modif. de de continuation + 1410=>75, // Suite de jugement/règlement/liquidation + 1411=>75, // Arrêt du plan de cession + 1412=>75, // Arrêt du plan de cession partielle + 1413=>75, // Arrêt du plan de continuation + 1414=>75, // Arrêt du plan de redressement + 1415=>75, // Prolongement du plan cession + 1416=>75, // Jugement constatant la bonne exécution du plan + 1417=>62, // Jugement d'extension de liquidation judiciaire + 1418=>52, // Jugement d'extension d'une procédure de redressement judiciaire + 1419=>57, // Jugement d'extension d'une procédure de sauvegarde + 1420=>70, // Nomination d'un liquidateur judiciaire + 1421=>70, // Jugement prorogeant le plan de redressement + 1425=>70, // Plan de cession avec location gérance + 1430=>70, // Jugement autorisant la poursuite d'activité + 1431=>70, // Jugement de cessation partielle d'activité + 1435=>70, // Suspension de l'exécution provisoire + 1436=>70, // Suspension provisoire des poursuites + 1440=>70, // Jugement accordant un délai pour déposer la liste des créances + 1445=>70, // Concordat + 1450=>92, //Cessation paiement + 1455=>70, // Jugement arrêtant le plan d'apurement du passif + 1460=>70, // Homologation du plan + 1470=>70, // Fin de mission d'administrateur judiciaire + 1480=>70, // Jugement ordonnant la jonction des procédures + 1500=>79, // Clôture de la procédure + 1501=>79, // Clôture de la procédure après cession totale + 1502=>76, // Clôture de la procédure pour extinction du passif + 1503=>79, // Cloture insuf.Actif + 1504=>79, // Clôture sauvegarde pour absence de projet de plan + 1505=>74, // Appel de jugement + 1506=>59, // Rectif ou Annulation RJ + 1507=>74, // Appel de jugement + 1508=>70, // Extinction du plan de sauvegarde + 1509=>70, // Extinction du plan de redressement + 1510=>74, // Rejet du plan + 1511=>70, // Résolution du plan de cession + 1512=>70, // Résolution du plan de continuation + 1513=>70, // Résolution du plan de sauvegarde + 1515=>74, // Arrêt divers + 1517=>59, // Rectification d'une erreur matérielle + 1520=>70, // Ordonnance + 1525=>74, // Appel du ministère public + 1530=>70, // Jugement constatant l'impécuniosité de la procédure de liquidation + 1540=>70, // Ordonnance statuant sur les contestations du projet de répartition + 1541=>74, // Rétractation de prononcé de liquidation judiciaire sur tierce opposition + 1542=>74, // Rétractation de jugement d'ouverture d'une procédure de sauvegarde sur tierce opposition + 1543=>74, // Rétractation de jugement d'ouverture d'une procédure de redressement judiciaire sur tierce opposition + 1544=>74, // Rétractation de jugement d'ouverture d'une procédure de liquidation judiciaire sur tierce opposition + 1545=>74, // Rétractation de jugement d'ouverture sur tierce opposition + 1546=>74, // Autre rétractation sur tierce opposition + 1550=>70, // Suites de jugements + 1580=>70, // Jugement prononçant la continuation de l'activité par apurement du passif + 1600=>63, // Faillite personnelle + 1601=>64, // Interdiction de gérer + 1602=>70, // Jugement de réhabilitation + 1603=>61, // Liquidation de Biens + 1604=>80, // Banqueroute + 1605=>70, // Jugement autorisant la reprise des poursuites individuelles + 1610=>80, // Faillite personnelle (Loi de 1985) + 1611=>80, // Interdiction de gérer (Loi de 1985) + 1620=>70, // Jugement condamnant le dirigeant en comblement du passif + 1650=>80, // Rétablissement Personnel + 1700=>70, // Décision soumise à publicité + 1900=>80, // Interdiction temporaire d'exercice de la profession de CAC + 1901=>80, // Radiation de la liste des CAC + 1999=>70, // Autre procédure collective + // MMD + 2000=>40, // Mention d'office + 2100=>39, // Chg.Capital/Cess.apport de parts + 2101=>39, // Chg.Capital/Cess.apport de parts + 2102=>39, // Chg.Capital/Cess.apport de parts + 2200=>40, // Cessation d'activité + 2201=>40, // Cessation d'activité temporaire + 2202=>41, // Dissolution + 2203=>41, // Dissolution de la société + 2204=>41, // Cessation d'activité avec dissolution + 2205=>40, // Fermeture du fonds + 2206=>39, // Mise en sommeil de la société + 2207=>39, // Suppression d'une branche d'activité + 2208=>39, // Suppression de l'établissement principal + 2209=>39, // Vente du fonds + 2210=>39, // Déclaration de dissolution par l'associé unique. + 2211=>39, // Clôture de la liquidation + 2212=>39, // Liquidation amiable + 2300=>39, // Changement d'Adresse + 2301=>39, // Modification de l'adresse du siège + 2302=>39, // Modification de l'enseigne + 2303=>39, // Modification de la date de clôture de l'exercice + 2304=>39, // Modification de la date de début d'activité + 2305=>39, // Modification de la dénomination + 2306=>39, // Modification de la durée de la société + 2307=>39, // Modification de la forme juridique + 2308=>39, // Modification du nom + 2309=>39, // Modification du nom commercial + 2310=>39, // Modification du pseudonyme + 2311=>39, // Modification sur l'exploitation + 2312=>39, // Modification(s) diverse(s) + 2313=>39, // Modification de l'activité + 2314=>39, // Poursuite de l'activité + 2315=>39, // Modification de l'administration + 2316=>39, // Mise en activité de la société + 2317=>39, // Modification du sigle + 2318=>39, // Modifications diverses + 2319=>39, // Poursuite de l'activité malgré la perte de plus de... + 2320=>39, // Reconsitution de l'actif net + 2321=>39, // Reconsitution de la moitié de l'actif net + 2350=>39, // Déclaration des associés (loi du 1er février 2005) + 2401=>39, // Changement de régime matrimonial + 2402=>39, // Changement de régime matrimonial (divorce) + 2403=>39, // Changement de régime matrimonial (mariage) + 2404=>39, // Changement de régime matrimonial (veuvage) + 2405=>39, // Changement de régime matrimonial (contrat de maria... + 2406=>39, // Reprise du fonds par le conjoint + 2407=>39, // Mention du conjoint collaborateur + 2408=>39, // Radiation du conjoint collaborateur + 2500=>30, // Confirmation établissement principal ou secondaire + 2510=>39, // L'établissement secondaire devient principal + 2520=>39, // Extension de l'établissement principal + 2600=>39, // Décès + 2610=>39, // Décision de l'unique actionnaire + 2620=>39, // Transmission universelle du patrimoine + 2630=>39, // Donation/Partage + 2635=>39, // Cession de parts + 2639=>39, // Nantissement de parts sociales + 2640=>39, // Changement de domicile personnel + 2650=>39, // Changement de nationalité + 2660=>39, // Réalisation de l'apport partiel d'actif + 2661=>39, // Apport partiel + 2700=>39, // Fusion/Absorption (entitée absorbante) + 2701=>39, // Fusion/Absorption (Entitée absorbante. Entité abso... + 2702=>39, // Fusion/Absorption (Entitée absorbante. Entité abso... + 2703=>39, // Fusion/Absorption (Entitée absorbante. Entité abso... + 2710=>39, // Projet de fusion (entitée absorbante) + 2720=>39, // Fusion/Absorption (entitée absorbée) + 2721=>39, // Fusion/Absorption (entitée absorbée non identifiée... + 2725=>39, // Fusion/Absorption + 2726=>39, // Projet de Fusion/Absorption + 2730=>39, // Projet de fusion (entitée absorbée) + 2740=>39, // Scission + 2750=>39, // Société participation + 2800=>37, // Location gérance reçue + 2840=>38, // Location/Gérance + 2850=>38, // Location gérance donnée : Précédent propriétaire e... + 2851=>38, // Location gérance donnée : Précédent propriétaire + 2860=>38, // Location gérance donnée : Précédent exploitant + 2870=>38, // Location gérance donnée + 2875=>38, // Gérance/Mandat + 2880=>38, // Renouvellement de location gérance + 2881=>38, // Changement de location gérance + 2885=>42, // Fin de location gérance + 2890=>38, // Location gérance relative à une branche + 2891=>39, // Location gérance relative à un établissement + 2892=>39, // Location gérance relative à un fond + 2900=>32, // Transfert d'établissement + 2901=>32, // Transfert de siège + 2902=>32, // Transfert du fonds + 2903=>32, // Projet de transfert du siège + 2904=>32, // Transfert du siège à l'étranger + 2950=>32, // Création de fonds + 2980=>32, // Transfert entre tribunaux + // DEPOTS DES COMPTES + 3100=>91, + 3200=>91, + 3300=>91, + 3999=>91, + // CREATIONS + 4000=>10, // Création d'entreprise + 4050=>10, // Création d'entreprise sans activité + 4100=>10, // Création d'entreprise sans établissement + 4200=>17, // Création d'établissement + 4250=>17, // Création suite à transfert + 4300=>17, // Création suite à reprise d'activité + 4350=>10, // Création suite à fin de location-gérance + 4355=>10, // Création suite à prise en location-gérance + 4360=>10, // Reprise d'activité par suite de la résolution de v + 4400=>10, // Création suite à changement de FJ + 4410=>10, // Création suite à héritage ou donation + 4450=>10, // Création suite à reprise par le conjoint + 4500=>17, // Fonds acquis dans le cadre d'une PC + 4501=>17, // Fonds acquis par achat + 4502=>17, // Fonds acquis par apport + 4600=>10, // Immatriculation d'une société de droit européen + 4999=>10, // Création + + // ventes !!! + 5500=>20, // Entreprise réalisant la vente + 5501=>20, // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5502=>20, // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5503=>20, // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5510=>20, // Entreprise réalisant la vente : Co-propriétaire BODA ventes 12 0000-00-00 00:00:00 + 5600=>20, // Entreprise réalisant l'acquisition BODA ventes 12 0000-00-00 00:00:00 + 5650=>20, + 5700=>20, // Entreprise réalisant l'acquisition BODA ventes 12 0000-00-00 00:00:00 + 5999=>20, + + // RADIATIONS + 6000=>40, //Radiation pour cause de clôture de la liquidation (amiable/simplifié/général) + 6001=>40, //Radiation pour cause de clôture de la liquidation amiable + 6002=>40, //Radiation pour cause de clôture de la liquidation judiciaire pour IA + 6003=>40, //Radiation pour cause de clôture de la liquidation judiciaire + 6004=>40, //Radiation pour cause de clôture de la liquidation judiciaire simplifié + 6005=>40, //Radiation pour clôture du plan de cession + 6100=>40, //Radiation pour cause de décès + 6200=>40, //Radiation pour cause de mention d'office + 6201=>40, //Radiation pour cause de cessation d'activité + 6300=>40, //Radiation pour cause de non-exercice + 6400=>40, //Radiation pour cause de transfert + 6500=>40, //Radiation pour cause de jugement de clôture du plan de cession + 6600=>40, //Radiation d'un établissement + 6700=>40, //Radiation + ); + $tabEven2RO=array( 2305=>'a', + 2308=>'a', // Chg de dénomination(RS,Ens,Sigle) + 2309=>'a', // Modification du nom commercial BODB mmd 12 0000-00-00 00:00:00 + 2310=>'a', // Modification du pseudonyme + 2300=>'b', // Changement d'Adresse + 2301=>'b', + 2900=>'b', // Transfert d'établissement + 2901=>'b', // Transfert de siège + 2902=>'b', // Transfert du fonds + 2903=>'b', // Projet de transfert du siège + 2904=>'b', // Transfert du siège à l'étranger + 2950=>'b', // Création de fonds + 2980=>'b', // Transfert entre tribunaux + 2101=>'c', // Chg.Capital/Cess.apport de parts + 2315=>'d', // Changement de Dirigeants + 2313=>'e', // Mod Act/obj.soc./Cess./Mise somm. + 2307=>'f', // Changement de Forme juridique + 2318=>'g', // Opération sur Participations + 2725=>'h', // Fusion Absorption + 2318=>'i', // Mod.garantie financière/Caution + 2401=>'j', // Changement de régime matrimonial + 2319=>'k', // Non dissolution anticipée + 2318=>'l', // Non dissolution anticipée + 2318=>'m', // Dissolution anticipée (ou non) + 2303=>'n', // Mod.date cloture exercice social + 5500=>'V', // Entreprise réalisant la vente + 5501=>'V', // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5502=>'V', // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5503=>'V', // Entreprise réalisant la vente : Ancien propriétair... BODA ventes 12 0000-00-00 00:00:00 + 5510=>'V', // Entreprise réalisant la vente : Co-propriétaire BODA ventes 12 0000-00-00 00:00:00 + 5600=>'V', + 5650=>'V', + 5700=>'A', // Entreprise réalisant l'acquisition BODA ventes 12 0000-00-00 00:00:00 + 1411=>'F', // Arrêt du plan de cession + 1408=>'G', // Modification du plan de cession + 1409=>'N', // Modification du plan de continuation + 1414=>'M', // Arrêt du plan de redressement + + ); + + +function exporte($txt, $lon, $sep='') { + $txt=strtr(trim($txt),array('''=>"'",'&'=>'&', '²'=>'²', "\r"=>'', "\n"=>'', "\t"=>'')); + + if ($sep=='') return sprintf("%-".$lon.'.'.$lon."s", $txt); + + return trim(sprintf("%-".$lon.'.'.$lon."s", $txt)).$sep; +} + +/** + * @todo + * 1. Numéroter toutes les procédures OK + * 2. Pouvoir faire du multiligne avec : 100 Annonce Bodacc + * 101 Commentaire + * 102 Activite déclaré au Bodacc + * 103 texte rectificatif + * 104 Annonce complète au format texte + * 105 Structure Dirigeants BODACC + * 106 Libellé du Périmètre de la vente + * 3. + * 5. JugesCommissaires à intégrer correctement + +Noms et prénoms des dirigeants de l'entreprise ' Anum. ? + +Raison sociale du vendeur Anum. 255 +Siren du vendeur (en cas de Vente/Cessions) Num. 9 +Indicateur de correction du SIREN vendeur (si C, le siren diffusé au BODACC est faut mais S&D a affecté le bon SIREN) ' Car. 1 +*/ +include_once(FWK_PATH.'common/chiffres.php'); +include_once(FWK_PATH.'common/dates.php'); +include_once(INCLUDE_PATH.'bodacc/classMBodacc.php'); +include_once(INCLUDE_PATH.'insee/classMInsee.php'); +include_once(INCLUDE_PATH.'partenaires/classMRncs.php'); +include_once(FWK_PATH.'mail/sendMail.php'); +$iBodacc=new MBodacc(); +$iInsee=new MInsee(); +$iRncs=new MRncs(); + +$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] +Conversion d'un flux surveillance/diffusion Bodacc S&D en fichier SO2000. + +";/*Options : + -d Clients en Diffusion Bodacc (par défaut) + -s Clients en Surveillance Bodacc + -e Ne pas tenir compte de la date de dernière exécution du script + -i Ne pas incrémenter les numéros de tour (pour les tests). +";*/ + +$tabFichLigneCmd=array(); + +$argv=$_SERVER['argv']; +for ($i=1; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (substr($argv[$i],1,1)) { + /*case 'i': + $incrementationDesTour=false; + break; + case 's': + $typePrestaton='surveillanceBodacc'; + break; + case 'd': + $typePrestaton='diffusionBodacc'; + break; + case 'e': + $ignoreDateDerExec=true; + break;*/ + case '-': + case '?': + die($strInfoScript); + break; + default: + die('Option '. $argv[$i] . " inconnue !\n"); + break; + } + } else $tabFichLigneCmd[]=$argv[$i]; +} + +if (count($tabFichLigneCmd)==0) { + $dh = opendir(DIR_SOFID_IN); + while (false !== ($filename = readdir($dh))) { + if ($filename<>'.' && $filename<>'..' && substr($filename, -4)=='.txt' && + substr($filename, 0,37)=='surveillanceBodacc_SURBODPRDFTSSOFID_') + $tabFichier[] = $filename; + } + sort($tabFichier); +} else $tabFichier=$tabFichLigneCmd; + +if (count($tabFichier)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier Kronenbourg Sofid à traiter !".EOL); + +$message=''; + +for ($iFic=0; isset($tabFichier[$iFic]); $iFic++) +{ + $nomFichierIn=$tabFichier[$iFic]; + $tabLignes=file(DIR_SOFID_IN.$nomFichierIn); + + $ligne001=$ligne100=$ligne104=$ligne999=0; + $nomFichierOut='kro800'.substr($nomFichierIn, 37,-4).'.fic'; + + $fp=fopen(DIR_SOFID_OUT.$nomFichierOut, 'w'); + $dateJ=date('Ymd'); + $ecrireLignePre=false; + + /** Codes/Variables à gérer **/ + $depPar=0; + $SOSTAE=''; + + foreach ($tabLignes as $i=>$ligne) { + $typeLigne=substr($ligne, 0, 3)*1; + switch ($typeLigne) { + case 1: // Ligne ignorée + // Ecriture de l'entête + $ligne001++; + break; + case 100: // Structure Bodacc + case 999: // Fin + $strTxt=wordwrap($txtAnn, 39, EOL); + $tabTxt=explode(EOL, $strTxt); + foreach($tabTxt as $j=>$txt) { + $SOSEQ++; + if($j%16==0) { + // Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce + $typEnr=9; + if ($j==0) $ligneTXT =initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ? + else $ligneTXT.=EOL.initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ? + $ligneTXT.=initstr($SONUME, 9, '0', ALIGN_RIGHT); // Numéro d'entreprise BIL ? + $ligneTXT.=initstr($SONUS, 9, '0', ALIGN_RIGHT); // Numéro d'UFS BIL ? + $ligneTXT.=initstr($nann, 9, '0', ALIGN_RIGHT); // Numéro d'annonce BIL ? + $ligneTXT.=initstr($siren, 9, '0', ALIGN_RIGHT); // Siren + $ligneTXT.=initstr($nic, 5, '0', ALIGN_RIGHT); // Nic + $ligneTXT.=exporte('SE', 2); // Code produit BIL ? SE, DE, DI, SJ + $ligneTXT.=initstr($SOSEQ, 5, '0', ALIGN_RIGHT); // Numéro dans la séquence + $ligneTXT.=initstr($dateJ, 8, '0', ALIGN_RIGHT); // Numéro dans la séquence + $ligneTXT.=exporte($typEnr, 1); // Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce + $ligneTXT.=exporte('TXT', 3); // Structure identité + $ligneTXT.=exporte('A', 1); // Confirmation 'A'uto ou 'C' pour manuelle + $ligneTXT.=exporte($ref, 30); // Réf. Client + $ligneTXT.=exporte($SOORIG, 1); // 1:Insee actif, 2=Ufs, 3=Annonce, 4=Manuelle, 5=Asso, 7=RCS actif, 8=Insee cessa eco, 9=Insee/RCS radié + $ligneTXT.=exporte($SOJAL, 3); // 001=Bodacc A, 200=Bodacc B, 300=Bodacc C + $ligneTXT.=exporte($datePar, 8); // Date de parution + $ligneTXT.=initstr(0, 5, '0', ALIGN_RIGHT); // Page + $ligneTXT.=exporte($codeEve, 2); // + $ligneTXT.=initstr($depPar, 2, '0', ALIGN_RIGHT); + $ligneTXT.=initstr($numAnn, 6, '0', ALIGN_RIGHT); + $ligneTXT.=exporte($codeRol, 1); // + $ligneTXT.=exporte('T', 1); + } + $ligneTXT.=exporte($txt, 40); + } + $codeEve=$codeRol=''; + $ligneOut=$ligneID.EOL.$ligneANN.EOL.$ligneTXT; + if ($ligne100>1) $ecrireLignePre=true; + if($typeLigne==999) { + $ligne999++; + break; + } + + $nann = trim(substr($ligne, 3 , 10 ))*1; // N° d'annonce + $siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce + $tabIdentite=@$iInsee->getIdentiteEntreprise($siren); + $nic = trim(substr($ligne, 22, 5 ))*1; // Nic + $ref = trim(substr($ligne, 71, 18 )); // Référence Client + $numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année + $bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C + $datePar= substr($ligne, 31 , 8 ); // Date de parution du Bodacc Format AAAAMMJJ + $numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc + $typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce + $corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion + $corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ + $corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion + $corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion + $numRC = trim(substr($ligne,95 , 9 )); // Numéro de RC (Registre du Commerce) de l'entreprise + $rs = trim(substr($ligne,104, 150 )); // Raison sociale de l'entreprise + $nomCom = trim(substr($ligne,254, 100 )); // Nom Commerciale + $ens = trim(substr($ligne,354, 100 )); // Enseigne + $fj = trim(substr($ligne,484, 4 ))*1; // FJ + $fjLib = trim(substr($ligne,488, 90 )); // FJ libellé + $capMnt = trim(substr($ligne,578, 15 )); // Capital + $capDev = trim(substr($ligne,593, 3 )); // Capital Devise + $adrNum = trim(substr($ligne,596, 4 )); // + $adrBtq = trim(substr($ligne,600, 1 )); // FJ libellé + $adrVoi = trim(substr($ligne,601, 5 )); // FJ libellé + $adrLib = trim(substr($ligne,606, 50 )); // FJ libellé + $adrL2 = trim(substr($ligne,656, 50 )); // FJ libellé + $adrL3 = trim(substr($ligne,706, 40 )); // FJ libellé + $adrCP = trim(substr($ligne,746, 5 ))*1; // FJ libellé + $adrVil = trim(substr($ligne,751, 45 )); // FJ libellé + if ($adrCP==0) { + $adrNum = trim(substr($ligne,796, 4 )); // FJ libellé + $adrBtq = trim(substr($ligne,800, 1 )); // FJ libellé + $adrVoi = trim(substr($ligne,801, 5 )); // FJ libellé + $adrLib = trim(substr($ligne,806, 50 )); // FJ libellé + $adrL2 = trim(substr($ligne,856, 50 )); // FJ libellé + $adrL3 = trim(substr($ligne,906, 40 )); // FJ libellé + $adrCP = trim(substr($ligne,946, 5 ))*1; // FJ libellé + $adrVil = trim(substr($ligne,951, 45 )); // FJ libellé + } + $even=array(); + $even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN + $even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN + $even[5]= substr($ligne, 1004, 4 )*1; // Code Evènement Bodacc n°3 Cf. Table EVEN + $even[4]= substr($ligne, 1008, 4 )*1; // Code Evènement Bodacc n°4 Cf. Table EVEN + $even[3]= substr($ligne, 1012, 4 )*1; // Code Evènement Bodacc n°5 Cf. Table EVEN + $even[2]= substr($ligne, 1016, 4 )*1; // Code Evènement Bodacc n°6 Cf. Table EVEN + $even[1]= substr($ligne, 1020, 4 )*1; // Code Evènement Bodacc n°7 Cf. Table EVEN + $even[0]= substr($ligne, 1024, 4 )*1; // Code Evènement Bodacc n°8 Cf. Table EVEN + $txtEven=''; + foreach ($even as $codeEven) + if ($codeEven<>0) { + if (@$codeEve=='') $codeEve=$tabEven2SO[$codeEven]; + if (@$codeRol=='') $codeRol=$tabEven2RO[$codeEven]; + $txtEven.=$iBodacc->getEvenement($codeEven).', '; + $catEven=$iBodacc->getChapitreEvenement($codeEven); + } + else + $txtEven.=''; + $txtEven=substr($txtEven,0,strlen($txtEven)-2); + $dateCess= substr($ligne, 1136, 8 ); // Date de cessat° des paiements + $dateJuge= substr($ligne, 1144, 8 ); // Date de jugement + $dateEffet=substr($ligne, 1161, 8 ); // Date d'effet + if ($dateEffet*1==0) $dateEffet=$dateJuge; + + $vteMnt=substr($ligne, 1169, 15 ); // Montant de la vente + $vteDev=substr($ligne, 1184, 3 ); // Devise de la vente + + + if ($nic*1==0) $nic=$tabIdentite['Nic']; + + $SONABO='000960030'; + if ($tabIdentite['Actif']==1) $SOORIG=1; + elseif (!isset($tabIdentite['Actif'])) $SOORIG=3; + elseif ($tabIdentite['Actif']==0 && ($tabIdentite['EntActiveRCS']==1||$tabIdentite['EtabActifRCS']==1)) $SOORIG=7; + elseif ($tabIdentite['Actif']==0 && $tabIdentite['EntActiveRCS']==0 && $tabIdentite['EtabActifRCS']==0) $SOORIG=9; + else $SOORIG=8; + + if ($tabIdentite['Civilite']==1) $SOTSEX='M'; + elseif ($tabIdentite['Civilite']==2) $SOTSEX='F'; + else $SOTSEX=''; + $SONUME=''.preg_replace('/^0+/','', $tabIdentite['Source']).$tabIdentite['SourceId']; + $SONUS='000000000'; + $SOSEQ=1; + if ($adrCP==0) { + $adrNum = $tabIdentite['AdresseNum']; + $adrBtq = $tabIdentite['AdresseBtq']; + $adrVoi = $tabIdentite['AdresseVoie']; + $adrLib = $tabIdentite['AdresseRue']; + $adrL2 = $tabIdentite['Adresse2']; + $adrL3 = ''; + $adrCP = $tabIdentite['CP']; + $adrVil = $tabIdentite['Ville']; + } + $typEnr=1; + $DBILS2 =initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ? + $DBILS2.=initstr($SONUME, 9, '0', ALIGN_RIGHT); // Numéro d'entreprise BIL ? + $DBILS2.=initstr($SONUS, 9, '0', ALIGN_RIGHT); // Numéro d'UFS BIL ? + $DBILS2.=initstr($nann, 9, '0', ALIGN_RIGHT); // Numéro d'annonce BIL ? + $DBILS2.=initstr($siren, 9, '0', ALIGN_RIGHT); // Siren + $DBILS2.=initstr($nic, 5, '0', ALIGN_RIGHT); // Nic + $DBILS2.=exporte('SE', 2); // Code produit BIL ? SE, DE, DI, SJ + $DBILS2.=initstr($SOSEQ, 5, '0', ALIGN_RIGHT); // Numéro dans la séquence + $DBILS2.=initstr($dateJ, 8, '0', ALIGN_RIGHT); // Numéro dans la séquence + $DBILS2.=exporte($typEnr, 1); // Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce + $DBILS2.=exporte('ID', 3); // Structure identité + $DBILS2.=exporte('A', 1); // Confirmation 'A'uto ou 'C' pour manuelle + $DBILS2.=exporte($ref, 30); // Réf. Client + //($annonce['codePostalSiege'], 5, '0', ALIGN_RIGHT) + $DBILS2.=exporte($SOORIG, 1); // 1:Insee actif, 2=Ufs, 3=Annonce, 4=Manuelle, 5=Asso, 7=RCS actif, 8=Insee cessa eco, 9=Insee/RCS radié + $DBILS2.=exporte('', 1); // D=Siren douteux + $DBILS2.=initstr('', 9); // Témoin de MAJ + $DBILS2.=exporte($rs, 60); // + $DBILS2.=exporte(substr($rs,60),30); // + $DBILS2.=exporte($tabIdentite['Sigle'], 30); // Vide ! + $DBILS2.=exporte($ens, 60); // + $DBILS2.=initstr($adrNum, 4, '0', ALIGN_RIGHT); // + $DBILS2.=exporte($adrBtq, 1); // + $DBILS2.=exporte(preg_replace('/ +/',' ',$adrVoi.' '.$adrLib), 33); // + $DBILS2.=exporte($adrVil, 32); // + $DBILS2.=initstr($adrCP, 5, '0', ALIGN_RIGHT); // + $DBILS2.=exporte(preg_replace('/ +/',' ',$adrL2.' '.$adrL3), 30); // + $DBILS2.=exporte($tabIdentite['DateCreaEn'], 8); // Date créa ENT + $DBILS2.=exporte($tabIdentite['Siege'], 1); // Statut de l'établissement + $DBILS2.=initstr($tabIdentite['FJ'], 4, 0, ALIGN_RIGHT); + $DBILS2.=exporte($SOTSEX, 1); // Sexe M/F + + $DBILS2.=initstr($tabIdentite['NbEtab']*1, 4, 0, ALIGN_RIGHT); + $DBILS2.=exporte($SOSTAE, 4); // NAF4 ENT + $DBILS2.=exporte('', 4); // Famille ENT + $DBILS2.=exporte($SOSTAE, 4); // NAF4 ETAB + $DBILS2.=exporte('', 4); // Famille ETAB + $DBILS2.=exporte('', 3); + $DBILS2.=initstr(0, 13, '0', ALIGN_RIGHT); // Filler A1 + $DBILS2.=exporte('', 16); // Filler A2 + $DBILS2.=initstr(strtr($tabIdentite['Tel'],array('.'=>'','+'=>'00',' '=>'','-'=>'','/'=>'')), 10, '0', ALIGN_RIGHT); + $DBILS2.=initstr(strtr($tabIdentite['Fax'],array('.'=>'','+'=>'00',' '=>'','-'=>'','/'=>'')), 10, '0', ALIGN_RIGHT); + //5630Z5630Z RUE 00000000 00000000 2901929019 + $DBILS2.=exporte($tabIdentite['Web'], 40); // + $DBILS2.=exporte('', 63); // Filler B1 + $DBILS2.=initstr(0, 8, '0', ALIGN_RIGHT); // Filler B2 + $DBILS2.=exporte('', 79); + $DBILS2.=exporte($tabIdentite['NafEnt'], 5); + $DBILS2.=exporte($tabIdentite['NafEtab'], 5); + $DBILS2.=exporte('', 18); + $DBILS2.=exporte('', 9); // RUE ? + $DBILS2.=initstr(0, 8, '0', ALIGN_RIGHT); // Filler B2 + $DBILS2.=exporte('', 6); + $DBILS2.=initstr(0, 8, '0', ALIGN_RIGHT); // Filler B2 + $DBILS2.=exporte('', 20); + $DBILS2.=exporte($tabIdentite['Dept'], 2); // Département du siège + $DBILS2.=exporte($tabIdentite['codeCommune'], 3); // Localité + $DBILS2.=exporte($tabIdentite['Dept'], 2); // Département de l'étab + $DBILS2.=exporte($tabIdentite['codeCommune'], 3); // Localité + $DBILS2.=exporte('', 39); // Filler C + + $ligneID=$DBILS2; + $ligne100++; + $cor=''; + if ($typeAnn<>'I') + $cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate); + switch($typeAnn) { + case 'I': $cor='Insertion'.$cor; break; + case 'A': $cor='Additif'.$cor; break; + case 'R': $cor='Rectificatif'.$cor; break; + case 'S': $cor='Suppression'.$cor; break; + default: break; + } + $codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc + $libTri=$iBodacc->getTribunalNom($codeTri); + + $SOSEQ++; + if ($bodacc=='A') $SOJAL='001'; + elseif ($bodacc=='B') $SOJAL='200'; + elseif ($bodacc=='C') $SOJAL='300'; + else $SOJAL='999'; + $DBILS2 =initstr($SONABO, 9, '0', ALIGN_RIGHT); // Numéro d'abonné BIL ? + $DBILS2.=initstr($SONUME, 9, '0', ALIGN_RIGHT); // Numéro d'entreprise BIL ? + $DBILS2.=initstr($SONUS, 9, '0', ALIGN_RIGHT); // Numéro d'UFS BIL ? + $DBILS2.=initstr($nann, 9, '0', ALIGN_RIGHT); // Numéro d'annonce BIL ? + $DBILS2.=initstr($siren, 9, '0', ALIGN_RIGHT); // Siren + $DBILS2.=initstr($nic, 5, '0', ALIGN_RIGHT); // Nic + $DBILS2.=exporte('SE', 2); // Code produit BIL ? SE, DE, DI, SJ + $DBILS2.=initstr($SOSEQ, 5, '0', ALIGN_RIGHT); // Numéro dans la séquence + $DBILS2.=initstr($dateJ, 8, '0', ALIGN_RIGHT); // Numéro dans la séquence + $DBILS2.=exporte('9', 1); // Type d'enregistrement 1=EntConf, 2=Rejet, 4=Multipropo, 5=Suivi MAJ Entrep, 7=Infos, 8=Envoi documen, 9=Annonce + $DBILS2.=exporte('ANN', 3); // Structure identité + $DBILS2.=exporte('A', 1); // Confirmation 'A'uto ou 'C' pour manuelle + $DBILS2.=exporte($ref, 30); // Réf. Client + //($annonce['codePostalSiege'], 5, '0', ALIGN_RIGHT) + $DBILS2.=exporte($SOORIG, 1); // 1:Insee actif, 2=Ufs, 3=Annonce, 4=Manuelle, 5=Asso, 7=RCS actif, 8=Insee cessa eco, 9=Insee/RCS radié + $DBILS2.=exporte($SOJAL, 3); // 001=Bodacc A, 200=Bodacc B, 300=Bodacc C + $DBILS2.=exporte($datePar, 8); // Date de parution + $DBILS2.=initstr(0, 5, '0', ALIGN_RIGHT); // Page + if ($codeEve=='') { + $message.="Code évènement non géré : '$codeEven'".EOL; + sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Annonces Legales SOFID (ERREUR)", $message); + die($message); + } + $DBILS2.=exporte($codeEve, 2); // + $DBILS2.=initstr($depPar, 2, '0', ALIGN_RIGHT); + $DBILS2.=initstr($numAnn, 6, '0', ALIGN_RIGHT); + $DBILS2.=exporte($codeRol, 1); // + $DBILS2.=exporte($tabEvenSolib[$codeEve], 5); + $DBILS2.=exporte($codeTri, 6); // + $DBILS2.=exporte($numPar, 3); // + $DBILS2.=initstr($dateJuge, 8, '0', ALIGN_RIGHT); // Date de jugement + $DBILS2.=initstr($dateEffet, 8, '0', ALIGN_RIGHT); // Date d'effet + $DBILS2.=initstr($dateCess, 8, '0', ALIGN_RIGHT); // Date de cessat° des paiements + $DBILS2.=exporte($vteDev, 2); // Devise de la vente + $DBILS2.=initstr($vteMnt, 11, '0', ALIGN_RIGHT); // Montant de la vente + $DBILS2.=exporte('', 33); // Particularité + $DBILS2.=exporte('', 4); // Code rubrique du Bodacc A1xx + $DBILS2.=exporte('', 6); // Code lib injecté + + $tabJuge=$iRncs->getIntervenants($siren); + foreach ($tabJuge as $iDepot=>$depot) { + $DBILS2.=exporte('', 5); // Mot clé Nom + $DBILS2.=exporte('', 1); // Type officier ministeriel + $DBILS2.=exporte($depot['admcode'], 7); // Code Bil + $DBILS2.=exporte($depot['admnom'], 30); // Nom syndic + $DBILS2.=exporte($depot['admadrNum'], 4); // N° rue + $DBILS2.=exporte($depot['admadrInd'], 1); // Bis + $DBILS2.=exporte('', 3); // Type Voie + $DBILS2.=exporte($depot['admadrVoie'], 33); // Lib Voie + $DBILS2.=exporte('', 32); // Lieu + $DBILS2.=exporte($depot['admadrCP'], 5); // CP + $DBILS2.=exporte($depot['admadrVille'], 32); // Ville + $DBILS2.=exporte('', 10); // Tel + if ($iDepot==1) break; + } + + $ligneANN=$DBILS2; + $txtAnn=''; + //if ($ligne100>1) $ecrireLignePre=true; + break; + case 104: // Annonce + $ligne104++; + $txtAnn=trim($txtAnn.' '.trim(substr($ligne, 89 , 1910))); // Texte Annonce + break; + default: // Ligne non gérée + break; + } + if ($ecrireLignePre) { + fwrite($fp, $ligneOut.EOL); + $ecrireLignePre=false; + } + } + fclose($fp); + + exec(__DIR__.'/convertSdCsv.php "'.DIR_SOFID_IN.$nomFichierIn.'"'); + $fichierCSV=substr(DIR_SOFID_IN.$nomFichierIn,0,-4).'.csv'; + move(DIR_SOFID_IN.$nomFichierIn.'.csv',$fichierCSV); + $tabAttached=array($fichierCSV); + $messageInfo="Bonjour, + + Veuillez trouver le fichier d'annonces relatif à votre abonnement Scores & Décisions. + + Bien Cordialement, + Le service Support. + + + ATTENTION : Cet email est un message automatique. Merci de ne pas y répondre. Pour toute question nous vous invitons à contacter notre support à l'adresse support@scores-decisions.com. + + --- + + SCORES & DECISIONS + Service support + 1, rue de Clairefontaine - 78120 RAMBOUILLET + tél : 33 (0)1 75 43 80 10 + fax : 33 (0)1 75 43 85 74 + support@scores-decisions.com + http://www.scores-decisions.com/ + Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises + + Pensez à l'environnement avant d'imprimer ce message ! + Save paper - think before you print"; + + + sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com,eliane.juhel@kronenbourg.com,anne.obrecht@kronenbourg.com,nathalie.schilling@kronenbourg.com', "Surveillance Annonces Legales SOFID", $messageInfo, '', $tabAttached); + + //die('FIN PROVISOIRE !'.EOL); + + if (bzip2(DIR_SOFID_IN.$nomFichierIn, DIR_SOFID_IN.$nomFichierIn)) { + unlink(DIR_SOFID_IN.$nomFichierIn); + echo date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic, $nomFichierIn vient d'être historisé.".EOL; + } + + if ($ligne100==0) { + // Le fichier est vide, on le supprime + unlink(DIR_SOFID_OUT.$nomFichierOut); + } else { + // On génère un AR de fin de transmission + file_put_contents(DIR_SOFID_OUT.str_replace('.fic','.top',$nomFichierOut),'OK'); + } +} + +sendMail('infoslegales@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Annonces Legales SOFID", "Conversion terminée."); + +echo date ('Y/m/d - H:i:s')." - Conversion terminée !" . EOL; +die(); + +?> diff --git a/bin/convertSdVerdoso.php b/bin/convertSdVerdoso.php new file mode 100644 index 00000000..c569fd90 --- /dev/null +++ b/bin/convertSdVerdoso.php @@ -0,0 +1,446 @@ +#!/usr/bin/php +'.' && $filename<>'..' && substr($filename, -4)=='.txt' && + substr($filename, 0,35)=='diffusionBodacc_DIFBODPRDMAIVERDOSO') + $tabFichier[] = $filename; + } + sort($tabFichier); +} else $tabFichier=$tabFichLigneCmd; + +if (count($tabFichier)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier Verdoso à traiter !".EOL); +//print_r($tabFichier); +//die(); + +$message=''; +$ligne001=$ligne100=$ligne104=$ligne999=0; + +for ($iFic=0; isset($tabFichier[$iFic]); $iFic++) +{ + $nomFichier =$tabFichier[$iFic]; + + $ligne001=$ligne100=$ligne104=$ligne999=0; + + $tabLignes=file(PROD_PATH.$nomFichier); + $nomFichierHebdo=PROD_PATH.'SD_Verdoso_'.date('Y\sW').'.csv'; + $fp=fopen($nomFichierHebdo, 'a+'); + while(!feof($fp)) { + fgets($fp,4096); + $nbLignesDeja++; + } + rewind($fp); + + /* + echo "Fichier Hebdomadaire: $nomFichierHebdo".EOL; + echo "Il y a $nbLignesDeja ligne(s) dans le fichier à l'ouverture".EOL; + */ +foreach ($tabLignes as $i=>$ligne) { + $ecrireLignePre=false; + $typeLigne=substr($ligne, 0, 3)*1; + switch ($typeLigne) { + case 1: // Ligne ignorée + // Ecriture de l'entête + $idannPre ='Identifiant Annonce'; + $siren ='Siren'; + $nic ='Nic'; + $ref ='Référence'; + $numPar ='Parution'; + $bodacc ='Bodacc'; + $datePar='Date parution'; + $numAnn ='Numéro Annonce'; + $cor ='Type Annonce'; + $libTri ='Tribunal'; + $numRC ='Numéro RCS'; + $raisonS='Raison sociale'; + $catEven='Chapitre'; + $txtEven='Evènement(s)'; + $txtAnn ='Texte Annonce'; + $inter ='Acheteur/Vendeur'; + $sirenV ='Siren Vendeur'; + $raisonSV='Nom Vendeur'; + $sirenA ='Siren Acheteur'; + $raisonSA='Nom Acheteur'; + $adresseFond='Adresse du fond'; + $montantVente='Montant de la vente'; + $deviseVente='Devise'; + $dateVente='Date de la vente'; + $opposition='Opposition'; + + $naf='NAF'; + $nafLib='Libellé NAF'; + $fj='Forme Jur.'; + $fjLib='Libellé Forme Juridique'; + $effectif='Effectif'; + $typeEf="Type d'effectif"; + $dateBilan='Date Bilan'; + $ca="Chiffre d'affaire en ME"; + $typeCa='Type CA'; + $capital='Capital'; + $dept='Dépt. Siège'; + $annee='Année de Création'; + + $ligneOut="$siren;$datePar;$raisonS;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn"; + if ($nbLignesDeja<2) { + fwrite($fp, $ligneOut.EOL); + } + $ligne001++; + break; + case 100: // Structure Bodacc + + /*Identité du vendeur Rubrique Siren acheteur Raison Sociale Adresse du fonds */ + $ligne100++; + $idann = substr($ligne, 3 , 10 )*1; // Id interne de l'annonce S&D + if ($idannPre<>$idann) { + /** Recherche de l'oppositions + **/ + if (preg_match('/Oppositions(?: )\:(.*)(?:Commentaires|\.$)/Uis', $txtAnn, $matches)) + $opposition=trim($matches[1]); + /** Rechercher du montant de la vente + **/ + if (preg_match("/(?:prix|montant|indémni|indemni|évalu|evalu|éstim|estim)\D{1,15}([0-9\.,\?\s ]*)(?:eur|euro|euros)/i", $txtAnn, $matches)) { + $montantVente=''.trim($matches[1]); + echo "Montant de la vente AV: $montantVente\n"; + if (substr($montantVente,-3,1)==',') { + $montantVente=substr($montantVente,0,strlen($montantVente)-3); + // echo "ICI1\n"; + } + elseif (substr($montantVente,-3,1)=='.') { + echo "'".substr($montantVente,-3,3)."'\n"; + $montantVente=substr($montantVente,0,strlen($montantVente)-3); + // echo "ICI2\n"; + } + $montantVente=strtr($montantVente,array('.'=>'',','=>'',' '=>'')); + + $deviseVente='EUR'; + //echo "Montant de la vente AP: $montantVente\n"; + } + /** Recherche de la date de la vente + **/ + if ($dateVente=='00/00/0000') { + if (preg_match_all("/([0-9].{1,3})(janvier|f.vrier|mars|avril|mai|juin|juillet|ao.t|septembre|octobre|novembre|d.cembre).{1,2}([0-9]{4,4})/i", $txtAnn, $matches)) { + //print_r($matches); + //echo "Date de la vente : $dateVente\n"; + $dateVente=end($matches[0]); + //die($txtAnn); + } + } + if ($catEven=='procol') { + $adresseFond=$adresse; + if (preg_match('/Complément de jugement(?: )\:(.*)$/Uis', $txtAnn, $matches)) + $opposition=trim($matches[1]); + else + $opposition=''; + } + + //$ligneOut="$idannPre;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$opposition;$txtAnn"; + + if ($idannPre<>'Identifiant Annonce' && !$ignoreAnnPre) { + +// $ligneOut="$idann;$siren;$nic;$inter;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn"; + $ligneOut="$siren;$datePar;$raisonS;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn"; + fwrite($fp, $ligneOut.EOL); + + $sirenAffV=implode(' ', str_split($sirenV,3)); + if ($sirenA*1>0) $sirenAffA='(Siren : '.implode(' ', str_split($sirenA,3)).')'; + else $sirenAffA=''; + $message.="Siren : $sirenAffV\r\n"; + $message.="Raison Sociale : $raisonSV\r\n"; + $message.="Source : BODACC n°$numPar $bodacc du $datePar. "; + if (trim($dateInsert)<>'') + $message.='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n"; + $message.="Tribunal : $libTri\r\n"; + + $message.="NAF : $nafLib ($naf)\r\n"; + $message.="FJ : $fjLib ($fj)\r\n"; + $message.="Effectif $typeEf : $effectif\r\n"; + $message.="Dernier Bilan : $dateBilan\r\n"; + $message.="Chiffre d'Affaire $typeCa: $ca ME\r\n"; + $message.="Capital : $capital\r\n"; + $message.="Département : $dept\r\n"; + $message.="Année de création : $annee\r\n"; + $message.="\r\n"; + if (trim($raisonSA)<>'') { + $message.="Acheteur : $raisonSA $sirenAffA"."\r\n"; + if ($montantVente*1>0) + $message.="Montant de la vente : $montantVente $deviseVente en date du $dateVente."."\r\n"; + $message.="\r\n"; + } + $message.="$txtEven"."\r\n"; + $message.="\r\n"; + $message.=$txtAnn."\r\n"; + $message.="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n"; + } + $sirenA=$raisonSA=$sirenV=$raisonSV=$adresseFond=$montantVente=$deviseVente=$dateVente=''; + } + $siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce + $nic = trim(substr($ligne, 22, 5 )); // Nic + $ref = trim(substr($ligne, 71, 18 )); // Référence Client + $numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année + $bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C + $datePar= WDate::dateT('Ymd','d/m/Y',substr($ligne,31,8)); // Date de parution du Bodacc Format AAAAMMJJ + $numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc + $typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce + $corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion + $corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ + $corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion + $corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion + $adresse= trim(preg_replace('/ +/',' ',substr($ligne, 596 , 4 ).' '. + substr($ligne, 600 , 1 ).' '. + substr($ligne, 601 , 5 ).' '. + substr($ligne, 606 , 50 ).' '. + substr($ligne, 656 , 50 ).' '. + substr($ligne, 706 , 40 ).', '. + substr($ligne, 746 , 5 ).' '. + substr($ligne, 751 , 45 ))); + $venteDt= WDate::dateT('Ymd','d/m/Y',substr($ligne,1161,8)); + $venteMt= substr($ligne, 1169 , 15 ); + $venteDev=substr($ligne, 1184 , 3 ); + $dateInsert=substr($ligne, 1910 , 8 ); + + $cor=''; + if ($typeAnn<>'I') + $cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate); + switch($typeAnn) { + case 'I': $cor='Insertion'.$cor; break; + case 'A': $cor='Additif'.$cor; break; + case 'R': $cor='Rectificatif'.$cor; break; + case 'S': $cor='Suppression'.$cor; break; + default: break; + } + $codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc + $libTri=$iBodacc->getTribunalNom($codeTri); + + $numRC = trim(substr($ligne, 95 , 9 )); // Numéro de RC (Registre du Commerce) de l'entreprise + $raisonS= trim(substr($ligne, 104 , 150 )); // Raison sociale de l'entreprise + $even=array(); + $even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN + $even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN + $even[5]= substr($ligne, 1004, 4 )*1; // Code Evènement Bodacc n°3 Cf. Table EVEN + $even[4]= substr($ligne, 1008, 4 )*1; // Code Evènement Bodacc n°4 Cf. Table EVEN + $even[3]= substr($ligne, 1012, 4 )*1; // Code Evènement Bodacc n°5 Cf. Table EVEN + $even[2]= substr($ligne, 1016, 4 )*1; // Code Evènement Bodacc n°6 Cf. Table EVEN + $even[1]= substr($ligne, 1020, 4 )*1; // Code Evènement Bodacc n°7 Cf. Table EVEN + $even[0]= substr($ligne, 1024, 4 )*1; // Code Evènement Bodacc n°8 Cf. Table EVEN + $txtEven=''; + $inter='Vendeur'; // Par défaut, nous sommes avec un vendeur + foreach ($even as $codeEven) + if ($codeEven<>0) { + $txtEven.=$iBodacc->getEvenement($codeEven).', '; + $catEven=$iBodacc->getChapitreEvenement($codeEven); + if ($codeEven==5700) { + $inter='Acheteur'; // L'interlocuteur est l'acheteur ! + $sirenA=$siren; + $raisonSA=$raisonS; + $adresseFond=$adresse; + $montantVente=$venteMt; + $deviseVente=$venteDev; + $dateVente=$venteDt; + } + } + else + $txtEven.=''; + + if ($inter=='Vendeur') { + $sirenV=$siren; + $raisonSV=$raisonS; + if ($sirenV>1000) + $tabIdentite=@$iInsee->getIdentiteEntreprise($sirenV,0,0,0,0); + else + $tabIdentite=array(); + + //getIdentiteEntreprise($siren, $nic=0, $id=0, $forceVerif=false, $accesDist=true) { + $naf=$tabIdentite['NafEnt']; + $nafLib=$tabIdentite['NafEntLib']; + $fj=$tabIdentite['FJ']; + $fjLib=$tabIdentite['FJ_lib']; + $capital=$tabIdentite['Capital'].' '.$tabIdentite['CapitalDev']; + $dept=$tabIdentite['Dept']; + $annee=substr($tabIdentite['DateCreaEt'],0,4)*1; + if ($annee>substr($tabIdentite['DateCreaEn'],0,4)*1) + $annee=substr($tabIdentite['DateCreaEn'],0,4); + if ($annee>substr($tabIdentite['dateImmat'],0,4)*1) + $annee=substr($tabIdentite['dateImmat'],0,4); + + $effInsee=$tabIdentite['Effectif']; + $caInsee=$tabIdentite['TrancheCA']; + + $effBilan=$tabIdentite['bilanYP']; + $caBilan=$tabIdentite['bilanFL']; + $dateBilan=str_replace('//','',WDate::dateT('Ymd','d/m/Y',$tabIdentite['bilanDate'])); + + if ($effBilan>0) { $effectif=$effBilan; $typeEf='Réel'; } + elseif ($effInsee>0) { $effectif=$effInsee; $typeEf='Estimé'; } + else { $effectif='N/C'; $typeEf=''; } + + $caEstime=0; + if ($caInsee<5 || $tabIdentite['bilanDate']*1==0) + $caEstime=$iInsee->getCAnafEffectif($naf, $effInsee); + + if ($caInsee>=5 || $caEstime>=10000000 || $caBilan>=10000000) { + if ($caBilan>0) { $ca=round($caBilan/1000000); $typeCa='Réel'; } + elseif ($caInsee==5){ $ca=10; $typeCa='Approchant'; } + elseif ($caInsee==6){ $ca=20; $typeCa='Approchant'; } + elseif ($caInsee==7){ $ca=50; $typeCa='Approchant'; } + elseif ($caInsee==8){ $ca=100; $typeCa='Approchant'; } + elseif ($caInsee==9){ $ca=200; $typeCa='Approchant'; } + else { $ca=round($caEstime/1000000); $typeCa='Estimé'; } + $ignoreAnnPre=false; + } else { + // On ignore cette ligne + $txtEven=substr($txtEven,0,strlen($txtEven)-2); + $txtAnn=''; + if ($idannPre<>$idann) $ecrireLignePre=true; + else $ecrireLignePre=false; + $idannPre=$idann; + $ignoreAnnPre=true; + } + /*print_r($tabIdentite); + die(); + */ + } + + $txtEven=substr($txtEven,0,strlen($txtEven)-2); + $txtAnn=''; + if ($idannPre<>$idann) $ecrireLignePre=true; + else $ecrireLignePre=false; + $idannPre=$idann; + break; + case 104: // Annonce + $ligne104++; + $txtAnn=trim($txtAnn.' '.str_replace(';','.',trim(substr($ligne, 89 , 1910)))); // Texte Annonce + break; + case 999: // Ligne ignorée + //$ligneOut="$idann;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$txtAnn"; + $opposition=preg_replace('/.*Oppositions \:/i','', $txtAnn); +// $ligneOut="$idann;$sirenV;$raisonSV;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$sirenA;$raisonSA;$catEven;$txtEven;$adresseFond;$montantVente;$deviseVente;$dateVente;$opposition;$txtAnn"; + if ($idann<>'Identifiant Annonce' && !$ignoreAnnPre) { + //$ligneOut="$idann;$siren;$nic;$inter;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn"; + $ligneOut="$siren;$datePar;$raisonS;$txtEven;$naf;$nafLib;$fj;$fjLib;$effectif;$typeEf;$dateBilan;$ca;$typeCa;$capital;$dept;$annee;$txtAnn"; + fwrite($fp, $ligneOut.EOL); + $sirenAffV=implode(' ', str_split($sirenV,3)); + if ($sirenA*1>0) $sirenAffA='(Siren : '.implode(' ', str_split($sirenA,3)).')'; + else $sirenAffA=''; + $message.="Siren : $sirenAffV\r\n".'Raison Sociale : '.$raisonSV."\r\n"; + $message.="Source : BODACC n°$numPar $bodacc du $datePar. "; + if (trim($dateInsert)<>'') + $message.='Entrée en base S&D : '. WDate::dateT('Ymd','d/m/Y',$dateInsert)."\r\n"; + $message.="Tribunal : $libTri"."\r\n"; + + $message.="NAF : $nafLib ($naf)\r\n"; + $message.="FJ : $fjLib ($fj)\r\n"; + $message.="Effectif $typeEf : $effectif\r\n"; + $message.="Dernier Bilan : $dateBilan\r\n"; + $message.="Chiffre d'Affaire $typeCa: $ca ME\r\n"; + $message.="Capital : $capital\r\n"; + $message.="Département : $dept\r\n"; + $message.="Année de création : $annee\r\n"; + + $message.="\r\n"; + if (trim($raisonSA)<>'') { + $message.="Acheteur : $raisonSA $sirenAffA"."\r\n"; + if ($montantVente*1>0) + $message.="Montant de la vente : $montantVente $deviseVente en date du $dateVente."."\r\n"; + $message.="\r\n"; + } + $message.="$txtEven"."\r\n"; + $message.="\r\n"; + $message.=$txtAnn."\r\n"; + $message.="\r\n\r\n---------------------------------------------------------------------------\r\n\r\n"; + } + $ligne999++; + $ecrireLignePre=true; + break; + default: // Ligne non gérée + break; + } + + } + + + fclose($fp); + + if (bzip2(PROD_PATH.$nomFichier, PROD_PATH.$nomFichier)) { + unlink(PROD_PATH.$nomFichier); + echo date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic, $nomFichier vient d'être historisé.".EOL; + } + +} + +if (date('w')==5) { + $tabAttached=array($nomFichierHebdo); + $messageInfo="Bonjour, + + Veuillez trouver le fichier hebdomadaire des Jugements d'Ouvertures de Sauvegarde et de Redressement Judiciaire. + + Bien Cordialement, + Le service Support. + + -- + + SCORES & DECISIONS + Service support + 1, rue de Clairefontaine - 78120 RAMBOUILLET + tél : 33 (0)1 75 43 80 10 + fax : 33 (0)1 75 43 85 74 + support@scores-decisions.com + http://www.scores-decisions.com/ + Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises + + Pensez à l'environnement avant d'imprimer ce message ! + Save paper - think before you print"; + + $emailEnvoi='vfahmy@verdoso.com,suivi@scores-decisions.com,ylenaour@scores-decisions.com'; + if ($catEven<>'Chapitre') { + sendMail('infoslegales@scores-decisions.com', $emailEnvoi, "Surveillance Annonces Legales", $messageInfo, '', $tabAttached); + //sendMail('infoslegales@scores-decisions.com', 'jean.frederic.lambert@gmail.com', "Surveillance Annonces Legales", $messageInfo, '', $tabAttached); + } +} + +echo date ('Y/m/d - H:i:s')." - Conversion terminée !" . EOL; +die(); + +?> \ No newline at end of file diff --git a/bin/deprecated/facturation.php b/bin/deprecated/facturation.php new file mode 100644 index 00000000..898a9292 --- /dev/null +++ b/bin/deprecated/facturation.php @@ -0,0 +1,236 @@ +#!/usr/bin/php +select('clients', 'id, nom, actif, test, racineLogin, siren, nic, tva, editerFacture, fact_detail, fac_dest, fac_adr1, fac_adr2, fac_adr3, fac_email, fac_tel, fact_rib, liv_dest, liv_adr1, liv_adr2, liv_adr3, liv_email, liv_tel, droits, filtres_ip, dateInsert, dateUpdate, respComSD, typeContrat, dateSignature, typeAcces, accesPieces, accesKbis, accesInvestigations, miseSousSurveillance, forfaitExtranetPeriode, forfaitExtranetMontant, reconductionAuto, remarque, forfaitPiecesNb, forfaitPiecesMt, forfaitPiecesDep, forfaitInvestigNb, forfaitInvestigMt, forfaitInvestigDep, tarifIndiscore', '1', false, MYSQL_ASSOC); +$tabCli=array(); +foreach ($tabTmp as $tabTmp2) { + $tabCli[$tabTmp2['id']]=$tabTmp2; +} +$nbCli=count($tabCli); +echo date('Y/m/d - H:i:s') ." - Nombre de clients : $nbCli".EOL; + +$tabTmp=$iDb->select('utilisateurs', 'id, idClient, actif, deleted, LOWER(login) AS login, email, typeCompte, filtre_ip, civilite, nom, prenom, raisonSociale, tel, fax, mobile', '1', false, MYSQL_ASSOC); +$tabUti=array(); +foreach ($tabTmp as $tabTmp2) { + $tabUti[$tabTmp2['login']]=$tabTmp2; +} + +$nbUti=count($tabUti); +echo date('Y/m/d - H:i:s') ." - Nombre d'utilisateurs : $nbUti".EOL; + +/*$nbActes=$iDb->select('logs', 'LOWER(login) AS login, page, siren, nic, params, dateHeure', " +(page LIKE 'greffe_%' OR page LIKE 'inpi_%' OR page='kbis' OR page='indiscore') AND (params<>'' OR page='indiscore') AND (params NOT LIKE '%erreur%' OR PARAMS LIKE '%erreur 17%') AND dateHeure BETWEEN '$dateDeb 00:00:00' AND '$dateFin 23:59:59' GROUP BY login, siren, date(dateHeure), params ORDER BY login asc, dateHeure ASC", false, MYSQL_ASSOC, true);*/ + +$nbActes=$iDb->select('logs', 'LOWER(login) AS login, page, siren, nic, params, dateHeure', " +(page LIKE 'greffe_%' OR page LIKE 'inpi_%' OR page='kbis' OR page='indiscore') AND (params<>'' OR page='indiscore' AND tarifIndiscore<>0) AND (params NOT LIKE '%erreur%' OR PARAMS LIKE '%erreur 17%') AND dateHeure BETWEEN '$dateDeb 00:00:00' AND '$dateFin 23:59:59' GROUP BY login, siren, date(dateHeure), params ORDER BY login asc, dateHeure ASC", false, MYSQL_ASSOC, true); + +echo date('Y/m/d - H:i:s') ." - Nombre d'actes à facturer : $nbActes".EOL; +$loginPre=false; +$tabFacturation=$tabFacturationDet1=$tabFacturationDet2=array(); +while ($tab=$iDb->fetch(MYSQL_ASSOC)) { + /** Nombre total d'actes commandés par Client et par type d'acte + **/ + @$tabFacturation[$tabCli[$tabUti[$tab['login']]['idClient']]['id']][$tab['page']]++; + + /** Nombre total d'actes commandés par Client, utilisateurs et par type d'acte + **/ + @$tabFacturationDet1[$tabCli[$tabUti[$tab['login']]['idClient']]['id']][$tab['login']][$tab['page']]++; + + /** Facturation détaillée des actes + **/ + if ($tabCli[$tabUti[$tab['login']]['idClient']]['fact_detail']=='Oui') + @$tabFacturationDet2[$tabCli[$tabUti[$tab['login']]['idClient']]['id']][$tab['login']][$tab['page']][]= + array( 'siren'=>$tab['siren'], + 'params'=>$tab['params'], + 'dateHeure'=>$tab['dateHeure']); +// @$tabFacturation2[$tab['login']][$tab['page']]++; + //echo $siren.' '.trim($tab['DIR_IDEN'])."\t:\t$civ Nom='$nom', Prenom='$prenom', Usage='$naissNom' né le $naissDate à $naissLieu\t"; + //$loginPre=$tab['login']; +} +/* +echo "tabFacturation :\n"; +print_r($tabFacturation); +echo "tabFacturationDet1 :\n"; +print_r($tabFacturationDet1); +echo "$tabFacturationDet2 :\n"; +print_r($tabFacturationDet2); +echo "tabCli :\n"; +print_r($tabCli); +echo "tabUti :\n"; +print_r($tabUti); +*/ +$iFacture=0; +foreach ($tabFacturation as $idClient => $tabFacture) { + $iFacture++; + $numFacture=WDate::dateT('d/m/Y', 'Ym', $tplt['dateFacture']).sprintf("%04s", $iFacture); + $numClient = $tabCli[$idClient]['siren']."-$idClient"; + + $tplt['numFacture'] = $numFacture; + $tplt['numClient'] = $numClient; + $tplt['siren'] = $tabCli[$idClient]['siren']; + $tplt['nic'] = $tabCli[$idClient]['nic']; + $tplt['raisonSociale'] = $tabCli[$idClient]['nom']; + $tplt['numtva'] = $tabCli[$idClient]['tva']; + // echo 'Facturation détaillée : '.$tabCli[$idClient]['fact_detail']."\n"; + // Destinataire Facturation / Signataire + $tplt['adresseFact1'] = $tabCli[$idClient]['fac_adr1']; + $tplt['adresseFact2'] = $tabCli[$idClient]['fac_adr2']; + $tplt['adresseFact3'] = $tabCli[$idClient]['fac_adr3']; + $tplt['signataireNom'] = $tabCli[$idClient]['fac_dest']; + $tplt['signataireMail'] = $tabCli[$idClient]['fac_email']; + $tplt['signataireTel'] = $tabCli[$idClient]['fac_tel']; + // Livraison / Correspondant + $tplt['adresseLiv1'] = $tabCli[$idClient]['liv_adr1']; + $tplt['adresseLiv2'] = $tabCli[$idClient]['liv_adr2']; + $tplt['adresseLiv3'] = $tabCli[$idClient]['liv_adr3']; + $tplt['correspNom'] = $tabCli[$idClient]['liv_dest']; + $tplt['correspMail'] = $tabCli[$idClient]['liv_email']; + $tplt['correspTel'] = $tabCli[$idClient]['liv_tel']; + // Non affiché + $fact_detail = $tabCli[$idClient]['fact_detail']; // Facturation détaillée + $fact_rib = $tabCli[$idClient]['fact_rib']; // RIB S&D à fournir au client + // droits, filtres_ip, dateInsert, dateUpdate, respComSD, typeContrat, dateSignature, typeAcces, + $accesPieces = $tabCli[$idClient]['accesPieces']; + $accesKbis = $tabCli[$idClient]['accesKbis']; + $accesInvestigations = $tabCli[$idClient]['accesInvestigations']; + $ligne=$tplt['totalht']=$tplt['remise']=$tplt['tva']=$tplt['totalttc']=0; + $tplt['ligne']=array(); +/* for($i=0; $i<=10; $i++) { + $tplt['ligne'][$i]['intitule']='; + $tplt['ligne'][$ligne]['quantite']=1; + $tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitExtranetMontant']; + $tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht']; + $tplt['ligne'][$ligne]['remise']=0; + $tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196; + $tplt['ligne'][$ligne]['totalttc'] + */ + if ($tabCli[$idClient]['forfaitExtranetPeriode']=='Mensuel') { + $tplt['ligne'][$ligne]['intitule']='Accès mensuel extranet '.WDate::dateT('d/m/Y', 'M Y', $tplt['dateFacture']); + $tplt['ligne'][$ligne]['quantite']=1; + $tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitExtranetMontant']; + $tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht']; + $tplt['ligne'][$ligne]['remise']=0; + $tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196; + $tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva']; + $tplt['totalht']+=$tplt['ligne'][$ligne]['totalht']; + $tplt['remise']+=$tplt['ligne'][$ligne]['remise']; + $tplt['tva']+=$tplt['ligne'][$ligne]['tva']; + $tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc']; + $ligne++; + } + if ($tabCli[$idClient]['forfaitPiecesNb']>0) { + $tplt['ligne'][$ligne]['intitule']='Forfait '.$tabCli[$idClient]['forfaitPiecesNb'].' pièces officielles '.WDate::dateT('Y-m-d', 'M Y', $moisPrecedent); + $tplt['ligne'][$ligne]['quantite']=1;//; + $tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitPiecesMt']; + $tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht']; + $tplt['ligne'][$ligne]['remise']=0; + $tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196; + $tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva']; + $tplt['totalht']+=$tplt['ligne'][$ligne]['totalht']; + $tplt['remise']+=$tplt['ligne'][$ligne]['remise']; + $tplt['tva']+=$tplt['ligne'][$ligne]['tva']; + $tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc']; + $ligne++; + } + + if ($tabCli[$idClient]['forfaitPiecesDep']>0) { + $nbPiecesCommandees=@$tabFacture['greffe_actes'] + @$tabFacture['greffe_bilans']+ + @$tabFacture['inpi_rcs'] + @$tabFacture['kbis']; + $tplt['ligne'][$ligne]['intitule']='Pièces officielles hors forfait '.WDate::dateT('Y-m-d', 'M Y', $moisPrecedent); + $tplt['ligne'][$ligne]['quantite']=$nbPiecesCommandees-$tabCli[$idClient]['forfaitPiecesNb']; + if ($tplt['ligne'][$ligne]['quantite']<0) $tplt['ligne'][$ligne]['quantite']=0; + $tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['forfaitPiecesDep']; + $tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht']; + $tplt['ligne'][$ligne]['remise']=0; + $tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196; + $tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva']; + $tplt['totalht']+=$tplt['ligne'][$ligne]['totalht']; + $tplt['remise']+=$tplt['ligne'][$ligne]['remise']; + $tplt['tva']+=$tplt['ligne'][$ligne]['tva']; + $tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc']; + $ligne++; + } + + if ($tabCli[$idClient]['tarifIndiscore']>0) { + //$nbPiecesCommandees=@$tabFacture['greffe_actes'] + @$tabFacture['greffe_bilans']+ + // @$tabFacture['inpi_rcs'] + @$tabFacture['kbis']; + $tplt['ligne'][$ligne]['intitule']='IndiScore '.WDate::dateT('Y-m-d', 'M Y', $moisPrecedent); + $tplt['ligne'][$ligne]['quantite']=@$tabFacture['indiscore']; + if ($tplt['ligne'][$ligne]['quantite']<=0) $tplt['ligne'][$ligne]['quantite']=0; + $tplt['ligne'][$ligne]['puht']=$tabCli[$idClient]['tarifIndiscore']; + $tplt['ligne'][$ligne]['totalht']=$tplt['ligne'][$ligne]['quantite']*$tplt['ligne'][$ligne]['puht']; + $tplt['ligne'][$ligne]['remise']=0; + $tplt['ligne'][$ligne]['tva']=$tplt['ligne'][$ligne]['totalht']*0.196; + $tplt['ligne'][$ligne]['totalttc']=$tplt['ligne'][$ligne]['totalht']+$tplt['ligne'][$ligne]['tva']; + $tplt['totalht']+=$tplt['ligne'][$ligne]['totalht']; + $tplt['remise']+=$tplt['ligne'][$ligne]['remise']; + $tplt['tva']+=$tplt['ligne'][$ligne]['tva']; + $tplt['totalttc']+=$tplt['ligne'][$ligne]['totalttc']; + $ligne++; + } + +/* + $forfaitInvestigNb = $tabCli[$idClient]['forfaitInvestigNb']; + $forfaitInvestigMt = $tabCli[$idClient]['forfaitInvestigMt']; + $forfaitInvestigDep = $tabCli[$idClient]['forfaitInvestigDep']; +*/ + + $tabGlobal[$idClient]['totalht'] = $tplt['totalht']; + $tabGlobal[$idClient]['remise'] = $tplt['remise']; + $tabGlobal[$idClient]['tva'] = $tplt['tva']; + $tabGlobal[$idClient]['totalttc'] = $tplt['totalttc']; + +// print_r($tabFacture); + if ($tplt['totalht']>0 && $tabCli[$idClient]['editerFacture']=='Oui') { + @mkdir(REP_FACTURE.$moisCourant); + $fp=fopen(REP_FACTURE.$moisCourant.'/'.$numFacture.'.html', 'w'); + fwrite($fp, get_include_contents('/var/www/batch/factures/facture.php', $tplt)); + fclose($fp); + $iFactureAff=$iFacture; + } else { + // On n'édite pas de facture à 0 + $iFactureAff='-'; + $iFacture--; + } + echo "Facture n°$iFactureAff - ".$tabCli[$idClient]['nom']." ($numClient) : ".$tplt['totalht']."€HT\n"; +} +echo date('Y/m/d - H:i:s') ." - FIN du programme de facturation pour la période $dateDeb à $dateFin...".EOL; +die(); + +function get_include_contents($filename, $tplt) { + if (is_file($filename)) { + ob_start(); + include $filename; + $contents = ob_get_contents(); + ob_end_clean(); + return $contents; + } + return false; +} + + ?> \ No newline at end of file diff --git a/bin/diffusionBodacc.php b/bin/diffusionBodacc.php new file mode 100644 index 00000000..cb6c4e6c --- /dev/null +++ b/bin/diffusionBodacc.php @@ -0,0 +1,1752 @@ +#!/usr/bin/php +1) +{ + for ($i=1; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (substr($argv[$i],1,1)) { + case 'i': + $incrementationDesTour=false; + $repProduction=REP_TEMP; + break; + case 's': + $typePrestaton='surveillanceBodacc'; + break; + case 'd': + $typePrestaton='diffusionBodacc'; + break; + case 'e': + $ignoreDateDerExec=true; + break; + case 'f': + $forceExec=true; + break; + case 'r': + $retroActivite=substr($argv[$i],3,strlen($argv[$i])-3); + break; + case 'c': + $codeAdherent=substr($argv[$i],3,strlen($argv[$i])-3); + break; + case '-': + case '?': + die($strInfoScript); + break; + default: + die('Option '. $argv[$i] . " inconnue !\n"); + break; + } + } +} +} + +$iDb=new WDB('jo'); +$iDb2=new WDB('jo'); +$iInsee=new MInsee(); +$iBodacc=new MBodacc(); +$iRnvp=new MRnvp(); + +global $iInsee, $a, $iRnvp; + +//echo genereLigne200('950571802', '00053'); +//die(); + +function genereMultiLigne($typeLigne, $enteteLigne, $chaine, $eol="\r\n", &$nbLignes=0) { + $lonLigne=LONGUEUR_LIGNE_SORTIE-90; + $str=''; + $chaine=preg_replace('/ +/', ' ', strtr($chaine, array("\n"=>' ',"\r"=>' ',";"=>' '))); + switch ($typeLigne) { + case '101': // ? + case '102': // Activité déclarée au Bodacc + case '103': // Texte rectificatif + case '104': // Annonce Bodacc Complète + case '105': // Structure dirigeants + $tabLigne=str_split($chaine, $lonLigne); + foreach ($tabLigne as $i=>$ligne) { + $str.=initstr($typeLigne.$enteteLigne.$ligne, LONGUEUR_LIGNE_SORTIE).$eol; + $nbLignes++; + } + break; + default: + die("ERREUR : Structure de sortie n°$typeLigne non prise en charge !\n"); + break; + } + return $str; +} +function getListeAdherents($prestation, $codeAdherent='') { + $strCodeAdherent=''; + if ($codeAdherent<>'') $strCodeAdherent.=" AND q.loginprestation_c='$codeAdherent' "; + $iDbCrm=new WDB('sugarcrm');//formatdesenvois_c + $rep=$iDbCrm->select('cases_cstm q, accounts a, cases p LEFT JOIN contacts_cases k ON p.id = k.case_id LEFT JOIN contacts c ON k.contact_id = c.id LEFT JOIN contacts_cstm s ON c.id = s.id_c', +'p.id, p.case_number, p.name, p.account_id, a.name, q.typeprestation_c, q.datemiseenplace_c, q.datefinprestation_c, q.prestatest_c, q.loginprestation_c, q.passwordprestation_c, q.supportprestation_c, q.optionsupport_c, q.freqenvois_c, q.formatdesenvois_c, q.trtnumerotour_c, q.trtdatederniereexec_c*1 as derniereExec, q.optionsprestation_c, k.contact_id, k.deleted as lienContactDeleted, c.deleted as ContactDeleted, c.salutation, c.first_name, c.last_name, c.title, c.department, c.phone_mobile, c.phone_work, c.phone_fax, c.email1, c.email2, c.primary_address_street, c.primary_address_city, c.primary_address_postalcode, s.typedecontact_c', "p.deleted=0 AND p.id=q.id_c AND q.typeprestation_c='$prestation' AND q.prestationactive_c=1 AND p.account_id=a.id AND a.deleted=0 $strCodeAdherent ORDER BY p.case_number ASC", true, MYSQL_ASSOC); + //print_r($rep); + $tabPrestation=array(); + foreach ($rep as $i=>$contacts) { + $numPrestation=$contacts['case_number']; + if ($contacts['lienContactDeleted']==0 && $contacts['ContactDeleted']==0) { + if ($contacts['email1']<>'') $email=$contacts['email1']; + else $email=$contacts['email2']; + if (!isset($tabPrestation[$numPrestation])) { +// echo "Ligne $i, prestation $numPrestation : ".$contacts['last_name']."\n"; + $tabPrestation[$numPrestation]=array( + 'id'=>$contacts['case_number'], + 'idPrestationBdd'=>$contacts['id'], + 'nomClient'=>$contacts['name'], + 'typePrestation'=>$contacts['typeprestation_c'], + 'dateDebut'=>$contacts['datemiseenplace_c'], + 'dateFin'=>$contacts['datefinprestation_c'], + 'test'=>$contacts['prestatest_c'], + 'loginPrestation'=>$contacts['loginprestation_c'], + 'passwPrestation'=>$contacts['passwordprestation_c'], + 'supportPrestation'=>$contacts['supportprestation_c'], + 'optionSupport'=>$contacts['optionsupport_c'], + 'freqEnvois'=>$contacts['freqenvois_c'], + 'formatEnvois'=>$contacts['formatdesenvois_c'], + 'numeroDeTour'=>$contacts['trtnumerotour_c'], + 'dateDerniereExec'=>$contacts['derniereExec']*1, + 'optionPrestation'=>$contacts['optionsprestation_c'], + 'contacts'=>array(array( 'salutation'=>$contacts['salutation'], + 'prenom'=>$contacts['first_name'], + 'nom'=>$contacts['last_name'], + 'fonction'=>$contacts['title'], + 'tel_por'=>$contacts['phone_mobile'], + 'tel_bur'=>$contacts['phone_work'], + 'tel_fax'=>$contacts['phone_fax'], + 'email'=>$email, + 'adresse'=>$contacts['primary_address_street'], + 'ville'=>$contacts['primary_address_city'], + 'codePos'=>$contacts['primary_address_postalcode'], + 'typeContact'=>$contacts['typedecontact_c']))); + } else { + // echo "Ligne $i, prestation $numPrestation : ".$contacts['last_name']."\n"; + $tabPrestation[$numPrestation]['contacts']=array_merge($tabPrestation[$numPrestation]['contacts'], array( + array( 'salutation'=>$contacts['salutation'], + 'prenom'=>$contacts['first_name'], + 'nom'=>$contacts['last_name'], + 'fonction'=>$contacts['title'], + 'tel_por'=>$contacts['phone_mobile'], + 'tel_bur'=>$contacts['phone_work'], + 'tel_fax'=>$contacts['phone_fax'], + 'email'=>$email, + 'adresse'=>$contacts['primary_address_street'], + 'ville'=>$contacts['primary_address_city'], + 'codePos'=>$contacts['primary_address_postalcode'], + 'typeContact'=>$contacts['typedecontact_c']))); + } + }} + return $tabPrestation; +} + +echo date ('Y/m/d - H:i:s')." - Début du traitement diffusion BODACC.\n"; + +/** On récupère la liste des Adhérents **/ + +//die(print_r(getListeAdherents('extranet'))); +$tabAdherents=getListeAdherents($typePrestaton, $codeAdherent); +//print_r($tabAdherents);die(); +$nbClients=count($tabAdherents); +echo date ('Y/m/d - H:i:s')." - Il y a $nbClients client(s) à servir en $typePrestaton.".EOL; +$strMessage=date ('Y/m/d - H:i:s')." - Il y a $nbClients client(s) à servir en $typePrestaton.".EOL; +//print_r($tabAdherents);die(); + +foreach ($tabAdherents as $i=>$tabAdherent) // On boucle sur les prestations +{ + $clientNumTourFichier=($tabAdherent['numeroDeTour']*1)+1; + $clientIdentifiant=trim($tabAdherent['loginPrestation']); + $nomClient=trim($tabAdherent['nomClient']); + $numPrestation=$tabAdherent['id']; + + $tabRubFic=array(); + + + /** Le client souhaite une compression du fichier ? **/ + if (stripos($tabAdherent['optionSupport'], 'gzip')) $optionZip='gzip'; + elseif (stripos($tabAdherent['optionSupport'], 'zip')) $optionZip='zip'; + else $optionZip='none'; + + /** Le client préfère un paramétrage UNIX ou Window pour ses fins de lignes **/ + if (stripos($tabAdherent['optionSupport'], 'os=dos')) $optionEOL="\r\n"; + elseif (stripos($tabAdherent['optionSupport'], 'os=unix')) $optionEOL="\n"; + else $optionEOL=EOL; + + $tabOptOutput=array(); + + if($tabAdherent['dateDebut']<>'' && $tabAdherent['dateDebut']<>'0000-00-00') + $dateDebutPrestation=WDate::dateT('Y-m-d', 'Ymd', $tabAdherent['dateDebut']); + else + $dateDebutPrestation=false; + + if($tabAdherent['dateFin']<>'' && $tabAdherent['dateFin']<>'0000-00-00') + $dateFinPrestation=WDate::dateT('Y-m-d', 'Ymd', $tabAdherent['dateFin']); + else + $dateFinPrestation=false; + + //die($tabAdherent['dateDerniereExec']); + if ($ignoreDateDerExec) + $dateDernierTraitement=false; + elseif ($tabAdherent['dateDerniereExec']<>0) + $dateDernierTraitement=$tabAdherent['dateDerniereExec'];//WDate::dateT('Y-m-d', 'Ymd', $tabAdherent['dateDerniereExec']); + else + $dateDernierTraitement=false; + + + if ($dateDebutPrestation && $dateDebutPrestation>DATE) // La date de démarrage de la prestation n'est pas encore arrivée + { + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : La prestation démarre le $dateDebutPrestation !".EOL; + continue; + } + + if ($dateFinPrestation && DATE>$dateFinPrestation) // La date de fin de la prestation est révolue + { + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Fin de la prestation le $dateFinPrestation (Dernière exécution le $dateDernierTraitement) !".EOL; + if ($clientIdentifiant<>'SURBODTSTCFTMARCHEASP') + continue; + } + + if ($dateDernierTraitement && substr($dateDernierTraitement,0,8)*1==DATE*1) + { echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Traitement déjà exécuté aujourd'hui !".EOL; + continue; + } elseif ($dateDernierTraitement==0) { + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Jamais exécutée pour ce client !".EOL; + $dateDernierTraitement=false; + /* Il faudra vérifier si on génère le stocke et depuis quand sinon on prond le dernier Bodacc */ + }// Bloc a décommenter + + /** Livraison Quotidienne ou autre ? **/ + if ($tabAdherent['freqEnvois']=='h' && date('w')<>1 && !$ignoreDateDerExec && !$forceExec) { + /** Le client souhaite une livraison hebdo, pour l'instant elle se fera le lundi... **/ + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Traitement hebdomadaire en attente (dernier traitement le $dateDernierTraitement)".EOL; + //if ($dateDernierTraitement<>20130610004000) + continue; + } elseif ($tabAdherent['freqEnvois']=='m' && (date('w')<>1 || date('d')*1>7) && !$ignoreDateDerExec) { +// } elseif ($codeAdherent=='DIFBODPRDFTSA6CMOADACL40MACS') { + /** Le client souhaite une livraison mensuelle, pour l'instant elle se fera le 1er lundi du mois... **/ + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Traitement mensuel en attente (dernier traitement le $dateDernierTraitement)".EOL; + continue; + } + + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Export des annonces en cours... (dernier traitement le $dateDernierTraitement)".EOL; + + /** + ** On génère la ligne d'entête + **/ + $fp=fopen(REP_TEMP . $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt', 'w'); + if ($fp==false) die('ERREUR : Impossible de créer le fichier !'); + + $dateDebFichier=date('YmdHis'); + $str= initstr('001', 3, '0', ALIGN_RIGHT) . // Type de ligne + initstr($dateDebFichier, 14) . // Date de génération du fichier + initstr($clientNumTourFichier, 10, '0', ALIGN_RIGHT) . // Numéro de tour du fichier pour le client + initstr($clientIdentifiant, 36) . // Identifiant Client + initstr($typePrestaton, 32) . // Type de prestation + initstr(VERSION_FICHIER_BODACC, 4) . // Type de prestation + initstr(FILLER, 1901) . // FILLER + ''; + fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE).$optionEOL); + $nbLignes=1; + + /** + ** On génère les lignes de détail + **/ + $strRubrique=''; + $tabRubCollecte=array(); + if (stripos($tabAdherent['optionPrestation'], 'Rubrique')!==false) { + if (stripos($tabAdherent['optionPrestation'], 'comptes')) { // Export du Bodacc C - Dépôt des comptes + $strRubrique.="'comptes',"; + $tabRubCollecte[]=" typeEven LIKE '3%' "; + } + if (stripos($tabAdherent['optionPrestation'], 'creations')) { // Export des créations + $strRubrique.="'creations',"; + $tabRubCollecte[]=" typeEven LIKE '4%' "; + } + if (stripos($tabAdherent['optionPrestation'], 'mmd')) { // Export des MMD + $strRubrique.="'mmd',"; + $tabRubCollecte[]=" typeEven LIKE '2%' "; + } + if (stripos($tabAdherent['optionPrestation'], 'procol')) { // Export des ProCol + $strRubrique.="'procol',"; + $tabRubCollecte[]=" typeEven LIKE '1%' "; + } + if (stripos($tabAdherent['optionPrestation'], 'radiations')) { // Export des radiations + $strRubrique.="'radiations',"; + $tabRubCollecte[]=" typeEven LIKE '6%' "; + } + if (stripos($tabAdherent['optionPrestation'], 'ventes')) { // Export des ventes cessions + $strRubrique.="'ventes',"; + $tabRubCollecte[]=" typeEven LIKE '5%' "; + } + } + + if (stripos($tabAdherent['optionPrestation'], 'lignesOutput')!==false) { + if (strpos($tabAdherent['optionPrestation'], '101')) // Commentaire inclus dans l'annonce si nécessaire + $tabOptOutput[101]=true; else $tabOptOutput[101]=false; + if (strpos($tabAdherent['optionPrestation'], '102')) // Activite déclaré au Bodacc + $tabOptOutput[102]=true; else $tabOptOutput[102]=false; + if (strpos($tabAdherent['optionPrestation'], '104')) // Annonce complète au format texte + $tabOptOutput[104]=true; else $tabOptOutput[104]=false; + if (preg_match('/lignesOutput.*105/Ui', $tabAdherent['optionPrestation'])) // Structure Dirigeants BODACC + $tabOptOutput[105]=true; else $tabOptOutput[105]=false; + if (strpos($tabAdherent['optionPrestation'], '200')) // Structure Identité Insee S&D + $tabOptOutput[200]=true; else $tabOptOutput[200]=false; + if (preg_match('/lignesOutput.*400/Ui', $tabAdherent['optionPrestation'])) // Structure Bilans + $tabOptOutput[400]=true; else $tabOptOutput[400]=false; + } + + // Naf inclus + $tabNaf=array(); + $posNaf=stripos($tabAdherent['optionPrestation'], 'NAF='); + if ($posNaf!==false) { + if (preg_match('/NAF=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches)) + $tabNaf=preg_split('(;|,)', trim($matches[1])); + } + // Naf exclus + $posNaf=stripos($tabAdherent['optionPrestation'], 'NAF-='); + if ($posNaf!==false) { + $tabNafAll=$iInsee->getCodesNaf(); + if (preg_match('/NAF\-=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches)) { + $tabNafSuppr=preg_split('(;|,)', trim($matches[1])); + $tabNaf=array_diff($tabNafAll, $tabNafSuppr); + } + } + + // FJ incluses + $tabCJ=array(); + $posCJ=stripos($tabAdherent['optionPrestation'], 'CJ='); + if ($posCJ!==false) { + if (preg_match('/CJ=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches)) + $tabCJ=preg_split('(;|,)', trim($matches[1])); + } + // FJ exclues + $posCJ=stripos($tabAdherent['optionPrestation'], 'CJ-='); + if ($posCJ!==false) { + $tabCJAll=$iInsee->getCodesFJ(); + if (preg_match('/CJ-=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches)) { + $tabCJSuppr=preg_split('(;|,)', trim($matches[1])); + $tabCJ=array_diff($tabCJAll, $tabCJSuppr); + } + //die(print_r($tabCJ,1)); + } + + $tabCodeCom=array(); + $posNaf=stripos($tabAdherent['optionPrestation'], 'CodeCom='); + if ($posNaf!==false) { + if (preg_match('/CodeCom=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches)) + $tabCodeCom=preg_split('(;|,)', trim($matches[1])); + /////die(print_r($tabCodeCom)); + } + + // Codes Evènements S&D inclus + $tabEve=array(); + $posEve=stripos($tabAdherent['optionPrestation'], 'codeEven='); + if ($posEve!==false) { + if (preg_match('/codeEven=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches)) + $tabEve=preg_split('(;|,)', trim($matches[1])); + //die(print_r($tabCJ)); + } + + // Codes Evènements S&D exclus + $posEve=stripos($tabAdherent['optionPrestation'], 'codeEven-='); + if ($posEve!==false) { + $tabEveAll=$iBodacc->getListeCodeEven(); + if (preg_match('/codeEven-=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches)) { + $tabEveSuppr=preg_split('(;|,)', trim($matches[1])); + $tabEve=array_diff($tabEveAll, $tabEveSuppr); + } + } +/* print_r($tabAdherent['optionPrestation']); + print_r($tabCodeCom); + print_r($tabCJ); + print_r($tabEve); + print_r($tabOptOutput); + die();*/ + + $versionEvenClient=0; + if (preg_match('/^versionEven=(.*)$/mUi', $tabAdherent['optionPrestation'], $matches)) + $versionEvenClient=$matches[1]*1; + + $collecte=false; + if (preg_match('/^collecte=oui/mUi', $tabAdherent['optionPrestation'], $matches)) + $collecte=true; + + $mailSuivi=false; + $posMailSuivi=stripos($tabAdherent['optionPrestation'], 'mailSuivi='); + if ($posMailSuivi!==false) { + if (preg_match('/mailSuivi=(.*)(?:$|\n|\r)/i',$tabAdherent['optionPrestation'],$matches)) + $mailSuivi=preg_replace('/;|,/', ',', trim($matches[1])); + //die(print_r($mailSuivi)); + } + + $mailTo=false; + $posMailTo=stripos($tabAdherent['optionSupport'], 'mailTo='); + if ($posMailTo!==false) { + if (preg_match('/mailTo=(.*)(?:$|\n|\r)/i',$tabAdherent['optionSupport'],$matches)) + $mailTo=preg_replace('/;|,/', ',', trim($matches[1])); + //die(print_r($mailSuivi)); + } + + /*$tabSiren2=array(); + foreach ($tabSiren as $siren) { + $tabSiren2[]=$siren['siren']; + } + sort($tabSiren2); + $tabSiren=$tabSiren2; + unset($tabSiren2); + //die();*/ + + $fields ="d.id, d.siren, d.sirenValide, d.nic, d.nicValide, CONCAT('BOD-',SUBSTRING(d.Rubrique_Bodacc,1,1)) as source, d.Bodacc_Num, d.Bodacc_Date_Parution, d.Num_Annonce, d.Rubrique_Bodacc, d.Rubrique, d.typeAnnonce, d.corrNum_Annonce, d.corrBodacc_Date_Parution, d.corrPage, d.corrNumParution, d.corrTexteRectificatif, RC, d.raisonSociale, nomCommercial, d.enseigne, nationalite, FJ, Capital, CapitalDev, d.Tribunal_Code, adresse, adrNum, adrIndRep, adrTypVoie, adrLibVoie, adrComp1, adrComp2, codePostal, d.ville, adresseSiege, adrSiegeNum, adrSiegeIndRep, adrSiegeTypVoie, adrSiegeLibVoie, adrSiegeComp1, adrSiegeComp2, codePostalSiege, villeSiege, administration, activite, typeEven, commentaires, dateEffet, publication, publicationNom, publicationDate, fusion, dateDebutActivite, dateCessationActivite, dateCessationPaiement, dateJugement, Numero, VenteMt, VenteDev, bienAcqui, 'M' As inter1type, 0 AS inter1id, Mandataire, mandNom, mandRepr, mandAdresse, mandCP, mandVille, JugeCommissaire, jugeCommissaireSuppleant, 'R' As inter2type, 0 AS inter2id, ReprCreanciers, creaNom, creaRepr, creaAdresse, creaCP, creaVille, 'A' As inter3type, 0 AS inter3id, administrateur, admNom, admRepr, admAdresse, admCP, admVille, 'O' AS inter4type, 0 AS inter4id, oppositions, oppoNom, oppoRepr, oppoAdresse, oppoCP, oppoVille, perimetre, dateFinDepotCreances, delaiDepotCreances, dateFinObservation, FinObservationBodacc, d.dateInsert"; + $fieldsCol="a.id, a.siren, a.sirenValide, 0 AS nic, 0 AS nicValide, CONCAT(a.source,'-',a.parutionIdJal) as source, 0 as Bodacc_Num, a.dateSource as Bodacc_Date_Parution, 0 as Num_Annonce, '' as Rubrique_Bodacc, '' as Rubrique, 'Insertion' as typeAnnonce, '' as corrNum_Annonce, '' as corrBodacc_Date_Parution, '' as corrPage, '' as corrNumParution, '' AS corrTexteRectificatif, '' as RC, a.raisonSociale, '' AS nomCommercial, '' AS enseigne, '' AS nationalite, '' AS FJ, '' AS Capital, '' AS CapitalDev, a.tribunal as Tribunal_Code, adresse, '' AS adrNum, '' AS adrIndRep, '' AS adrTypVoie, '' AS adrLibVoie, '' AS adrComp1, '' AS adrComp2, a.codePostal*1 AS codePostal, a.ville, adresse AS adresseSiege, '' AS adrSiegeNum, '' AS adrSiegeIndRep, '' AS adrSiegeTypVoie, '' AS adrSiegeLibVoie, '' AS adrSiegeComp1, '' AS adrSiegeComp2, a.codePostal*1 as codePostalSiege, a.ville as villeSiege, nouvDir AS administration, nouvActivite as activite, CONCAT(a.typeEven,'',REPLACE(strEven,';','')) AS typeEven, '' AS commentaires, a.dateEffetFinP as dateEffet, '' AS publication, '' AS publicationNom, '' AS publicationDate, '' AS fusion, '' AS dateDebutActivite, '' as dateCessationActivite, a.dateCessationPaiement, a.dateJugement, '' AS Numero, montant AS VenteMt, 'EUR' AS VenteDev, '' AS bienAcqui, inter1type, inter1id, inter1nom AS Mandataire, inter1nom AS mandNom, '' AS mandRepr, '' AS mandAdresse, '' AS mandCP, '' AS mandVille, '' AS JugeCommissaire, '' AS jugeCommissaireSuppleant, inter2type, inter2id, inter2nom AS ReprCreanciers, inter2nom AS creaNom, '' AS creaRepr, '' AS creaAdresse, '' AS creaCP, '' AS creaVille, inter3type, inter3id, inter3nom AS administrateur, inter3nom AS admNom, '' AS admRepr, '' AS admAdresse, '' AS admCP, '' AS admVille, 'O' AS inter4type, 0 AS inter4id, '' AS oppositions, '' AS oppoNom, '' AS oppoRepr, '' AS oppoAdresse, '' AS oppoCP, '' AS oppoVille, '' AS perimetre, '' AS dateFinDepotCreances, '' AS delaiDepotCreances, '' AS dateFinObservation, '' AS FinObservationBodacc, a.dateInsert"; + + $where=$whereCol='1'; + // On filtre les rubriques demandées + if ($strRubrique<>'') { + $where.=' AND Rubrique IN('. substr($strRubrique,0,strlen($strRubrique)-1) .') '; + if (count($tabRubCollecte)>0) + $whereCol.=' AND ('.implode(' OR ', $tabRubCollecte).') '; + } + // On ne prend que les dernières annonces depuis la dernière exécution de la prestation pour le client + if ($typePrestaton=='diffusionBodacc') { + if ($dateDernierTraitement) { + if (!$retroActivite) { + $where.=" AND (d.dateInsert>$dateDernierTraitement OR d.dateUpdate>$dateDernierTraitement) "; + $whereCol.=" AND a.dateInsert>$dateDernierTraitement "; + } + else { + $where.=" AND (d.dateInsert>$dateDernierTraitement OR d.dateUpdate>$dateDernierTraitement OR (d.dateInsert>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateConf=0 AND s.dateSuppr=0) OR (d.dateUpdate>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateConf=0 AND s.dateSuppr=0) ) "; + $whereCol.=" AND (a.dateInsert>$dateDernierTraitement OR (a.dateInsert>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateConf=0 AND s.dateSuppr=0) ) "; + } + } + // ... sinon on prend les annonces depuis la date de début de la prestation + elseif ($dateDebutPrestation) + if (!$retroActivite) { + $where.=" AND (d.dateInsert>$dateDebutPrestation OR d.dateUpdate>$dateDebutPrestation) "; + $whereCol.=" AND a.dateInsert>$dateDebutPrestation "; + } else { + $where.=" AND (d.dateInsert>$dateDebutPrestation OR d.dateUpdate>$dateDebutPrestation OR (d.dateInsert>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateSuppr=0) OR (d.dateUpdate>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateSuppr=0) ) "; + $whereCol.=" AND (a.dateInsert>$dateDebutPrestation OR (a.dateInsert>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateSuppr=0) ) "; + } + } +/* else { + $where.=" AND (d.dateInsert>='MAX(DATE_FORMAT(d.dateInsert,'%Y-%m-%d'))' OR d.dateUpdate>='MAX(DATE_FORMAT(d.dateUpdate,'%Y-%m-%d'))') "; + $whereCol.=" AND a.dateInsert>='MAX(DATE_FORMAT(a.dateInsert,'%Y-%m-%d'))' "; + } + } else { + $where.=''; + $whereCol.=''; + } +*/ + + /*if (!$retroActivite) + $where.=" AND (d.dateInsert>$dateDernierTraitement OR d.dateUpdate>$dateDernierTraitement) "; + else { + $where.=" AND (d.dateInsert>$dateDernierTraitement OR d.dateUpdate>$dateDernierTraitement OR (d.dateInsert>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateConf=0 AND s.dateSuppr=0) OR (d.dateUpdate>DATE_SUB(s.dateAjout, INTERVAL $retroActivite DAY) AND s.dateConf=0 AND s.dateSuppr=0) ) "; + }*/ + + + $where.=" AND Bodacc_Date_Parution>'2010-05-11' AND d.dateSuppr=0 "; /** @todo A supprimer après le 19 juillet 2010 ... **/ + $whereCol.=" AND a.dateSource>'2010-05-12 02:00:00' AND a.dateSuppr=0 "; // Idem ... (Prev: après la rétro du 22 mai 2008) + + //echo "'$clientNumTourFichier'".EOL; + if ($clientNumTourFichier>1) { // @todo a tester !!!!! && !$retroActivite) { // Ne pas empecher d'envoyer les annonces sirenée ou intégrées avec du retard ! + $where.=" AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 "; + $whereCol.=" AND DATEDIFF(NOW(), dateJugement)<=60 "; + //die('ici'); + } + + if ($typePrestaton=='diffusionBodacc') { + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : diffusion...".EOL; + $tables='bodacc_detail d'; + $tablesCol='annonces a'; + // Credit safe +// if ($numPrestation==11) +// $where=" d.siren<>0 AND d.sirenValide=1 AND Bodacc_Date_Parution BETWEEN '2007-01-01' AND '2007-12-31' "; + + if (count($tabNaf)>0 || count($tabCJ)>0 || count($tabCodeCom)>0) { + $strNaf=$strCJ=''; + $fields="'BOD' AS src, d.id, e.siren, e.nic, e.actif, e.ape_etab, e.ape_entrep, e.adr_dep, e.adr_com, e.cj"; + $fieldsCol="'COL' AS src, a.id, e.siren, e.nic, e.actif, e.ape_etab, e.ape_entrep, e.adr_dep, e.adr_com, e.cj"; + $tables='bodacc_detail d, etablissements e'; + $tablesCol='annonces a, etablissements e'; + $where.=" AND d.siren=e.siren AND d.siren>1000 AND (d.nic=e.nic OR e.siege=1) "; + $whereCol.=" AND a.siren=e.siren AND a.siren>1000 "; + } + + if (count($tabNaf)>0) { + $strNaf="'".implode("','",$tabNaf)."'"; + $where.=" AND (e.ape_etab IN ($strNaf) OR e.ape_entrep IN ($strNaf)) "; + $whereCol.=" AND (e.ape_etab IN ($strNaf) OR e.ape_entrep IN ($strNaf)) "; + } + if (count($tabCodeCom)>0) { + $where.=" AND ("; + $whereCol.=" AND ("; + foreach($tabCodeCom as $iCom=>$codeCom) { + $dep=substr($codeCom,0,2); + if ($dep<>'2A' && $dep<>'2B') { + $dep=$dep*1; + if ($dep<10) $strDep="'$dep','0$dep','00$dep'"; + elseif ($dep>96)$strDep="'$dep','".substr($codeCom,0,3)."'"; + else $strDep="'$dep','0$dep'"; + } else $strDep="'$dep'"; + $com=substr($codeCom,2,3)*1; + if ($iCom>0) { $where.=" OR "; $whereCol.=" OR "; } + if ($com==0) { + $where.=" e.adr_dep IN ($strDep) "; + $whereCol.=" e.adr_dep IN ($strDep) "; + } elseif(substr($codeCom,5,1)=='.') { + $where.=" (e.adr_dep IN ($strDep) AND e.adr_com=$com AND e.rivoli LIKE '".substr($codeCom,6,4)."%' ) "; + $whereCol.=" (e.adr_dep IN ($strDep) AND e.adr_com=$com AND e.rivoli LIKE '".substr($codeCom,6,4)."%' ) "; + } else { + $where.=" (e.adr_dep IN ($strDep) AND e.adr_com=$com) "; + $whereCol.=" (e.adr_dep IN ($strDep) AND e.adr_com=$com) "; + } + } + $where.=") "; + $whereCol.=") "; + } + + if (count($tabCJ)>0) { + $strCJ=implode(',',$tabCJ); + $where.=" AND e.cj IN ($strCJ) "; + $whereCol.=" AND e.cj IN ($strCJ) "; + + // $where="d.id>=10454829 AND d.Rubrique IN('procol') AND d.siren=e.siren AND d.siren>1000 AND e.cj IN (5191,5192,5193,5194,5195,5196,5202,5203,5306,5307,5308,5309,5385,5410,5415,5422,5426,5431,5432,5442,5443,5451,5453,5454,5455,5458,5459,5460,5485,5498,5499,5505,5510,5515,5520,5522,5525,5530,5531,5532,5542,5543,5546,5547,5548,5551,5552,5553,5554,5555,5558,5559,5560,5585,5599,5605,5610,5615,5620,5630,5632,5642,5646,5647,5651,5652,5653,5655,5658,5659,5660,5685,5699,5710,5720,5785,5800,6100,6200,6210,6220,6316,6317,6318,6411,6521,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6551,6554,6558,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6571,6572,6573,6574,6575,6576,6577,6578,6585,6588,6589,6595,6596,6597,6598,6599,6901) GROUP BY d.id;"; + } + + if (count($tabEve)>0) { + $tabRubColl=array(); + /*print_r($tabEve); + die();*/ + foreach ($tabEve as $tmpEve) { + $tabRubColl[] =' typeEven LIKE \'%'.$tmpEve.'%\' '; + $tabRubColl2[]=' strEven LIKE \'%'.$tmpEve.'%\' '; + } + $where.=' AND ('.implode(' OR ', $tabRubColl).') '; + $whereCol.=' AND (typeEven IN ('.implode(',', $tabEve).') OR '.implode(' OR ', $tabRubColl2).') '; + } + + if (count($tabNaf)>0 || count($tabCJ)>0) { + $where.=" GROUP BY d.id"; + $whereCol.=" GROUP BY a.id"; + + /*$where="d.id>=10454829 AND d.Rubrique IN('procol') AND d.siren=e.siren AND d.siren>1000 AND e.cj IN (5191,5192,5193,5194,5195,5196,5202,5203,5306,5307,5308,5309,5385,5410,5415,5422,5426,5431,5432,5442,5443,5451,5453,5454,5455,5458,5459,5460,5485,5498,5499,5505,5510,5515,5520,5522,5525,5530,5531,5532,5542,5543,5546,5547,5548,5551,5552,5553,5554,5555,5558,5559,5560,5585,5599,5605,5610,5615,5620,5630,5632,5642,5646,5647,5651,5652,5653,5655,5658,5659,5660,5685,5699,5710,5720,5785,5800,6100,6200,6210,6220,6316,6317,6318,6411,6521,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6551,6554,6558,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6571,6572,6573,6574,6575,6576,6577,6578,6585,6588,6589,6595,6596,6597,6598,6599,6901) + AND ( typeEven LIKE '%1010%' OR typeEven LIKE '%1050%' OR typeEven LIKE '%1055%' OR typeEven LIKE '%1100%' OR typeEven LIKE '%1101%' OR typeEven LIKE '%1200%' OR typeEven LIKE '%1201%' OR typeEven LIKE '%1207%' OR typeEven LIKE '%1209%' OR typeEven LIKE '%1211%' OR typeEven LIKE '%1212%' OR typeEven LIKE '%1310%' OR typeEven LIKE '%1346%' OR typeEven LIKE '%1418%' OR typeEven LIKE '%1419%' ) GROUP BY d.id;"; + //die(); + */ + } + } + elseif ($typePrestaton=='surveillanceBodacc') { + $tabSiren=$iDb->select('surveillances_listes', 'siren, ref, refInfos', "idClient='$clientIdentifiant' AND dateSuppr='0000-00-00'", true, MYSQL_ASSOC); + $nbSirenClient=count($tabSiren); + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : $nbSirenClient unités en surveillance...".EOL; + $fields.=', s.ref'; + $fieldsCol.=', s.ref'; + $tables='bodacc_detail d, surveillances_listes s'; + $tablesCol='annonces a, surveillances_listes s'; + $where.=" AND d.siren=s.siren AND s.siren>1000 AND s.idClient='$clientIdentifiant' AND s.dateSuppr='0000-00-00' "; + $whereCol.=" AND a.siren=s.siren AND a.siren>1000 AND s.idClient='$clientIdentifiant' AND s.dateSuppr='0000-00-00' "; + // if ($clientIdentifiant<>'SURBODPRDFTSMEDERIC') { +/* if (!$retroActivite) { + $where.=" AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 "; + $whereCol.=" AND DATEDIFF(NOW(), dateJugement)<=60 "; + }*/ + // } else { + $where.=" AND d.dateInsert>s.dateDerEnvoi "; + $whereCol.=" AND a.dateInsert>s.dateDerEnvoi "; + // } + /* + $where="d.siren=s.siren AND s.siren>1000 AND s.idClient='SURBODPRDFTSMEDERIC' AND s.dateSuppr='0000-00-00' AND ( +(d.id=13278187 AND d.siren=513077818) OR +(d.id=13834100 AND d.siren=458202033) OR +(d.id=13893752 AND d.siren=503498636) OR +(d.id=13901548 AND d.siren=523090157) )"; + /**/ + } + else die('Type de prestation non gérée : '.$typePrestaton.EOL); + + //$where.=" AND DATEDIFF(NOW(), Bodacc_Date_Parution)<=60 "; // NE PAS ENVOYER D'ANNONCES DONT LES DELAIS DE FORCLUSION SONT PASSEES +/* if ($codeAdherent=='DIFBODTSTFTSA6CMO') { + $where="SIREN IN(038728333, +038733259, +998823504 +)"; + }*/ + + if ($collecte) { + $query ="SELECT $fields FROM $tables WHERE $where UNION SELECT $fieldsCol FROM $tablesCol WHERE $whereCol"; + echo date ('Y/m/d - H:i:s')." - $query;".EOL; + $res=$iDb->query($query); + $nbAnnonces=mysql_num_rows($res); + $strCollecte='(avec Collecte)'; + //die(mysql_error().EOL); + } else { + echo date ('Y/m/d - H:i:s')." - SELECT $fields FROM $tables WHERE $where".EOL; + $nbAnnonces=$iDb->select($tables, $fields, $where, true, MYSQL_ASSOC, true); // Gérer la table surveillance + $strCollecte='(Bodacc seul)'; + } + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : $nbAnnonces annonces à traiter $strCollecte...".EOL; + //echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Début de génération du fichier client en version $versionEvenClient...".EOL; + + //if ($collecte) die(); + //die(); + + if (count($tabNaf)>0 || count($tabCJ)>0 || count($tabCodeCom)>0) { + $fields="d.id, d.siren, d.sirenValide, CONCAT('BOD-',SUBSTRING(d.Rubrique_Bodacc,1,1)) as source, d.Bodacc_Num, d.Bodacc_Date_Parution, d.Num_Annonce, d.Rubrique_Bodacc, d.Rubrique, d.typeAnnonce, d.corrNum_Annonce, d.corrBodacc_Date_Parution, d.corrPage, d.corrNumParution, d.corrTexteRectificatif, RC, d.raisonSociale, nomCommercial, d.enseigne, nationalite, FJ, Capital, CapitalDev, d.Tribunal_Code, adresse, adrNum, adrIndRep, adrTypVoie, adrLibVoie, adrComp1, adrComp2, codePostal, d.ville, adresseSiege, adrSiegeNum, adrSiegeIndRep, adrSiegeTypVoie, adrSiegeLibVoie, adrSiegeComp1, adrSiegeComp2, codePostalSiege, villeSiege, administration, activite, typeEven, commentaires, dateEffet, publication, publicationNom, publicationDate, fusion, dateDebutActivite, dateCessationActivite, dateCessationPaiement, dateJugement, Numero, VenteMt, VenteDev, bienAcqui, 'M' As inter1type, 0 AS inter1id, Mandataire, mandNom, mandRepr, mandAdresse, mandCP, mandVille, JugeCommissaire, jugeCommissaireSuppleant, 'R' As inter2type, 0 AS inter2id, ReprCreanciers, creaNom, creaRepr, creaAdresse, creaCP, creaVille, 'A' As inter3type, 0 AS inter3id, administrateur, admNom, admRepr, admAdresse, admCP, admVille, 'O' AS inter4type, 0 AS inter4id, oppositions, oppoNom, oppoRepr, oppoAdresse, oppoCP, oppoVille, perimetre, dateFinDepotCreances, delaiDepotCreances, dateFinObservation, FinObservationBodacc, d.dateInsert"; + $fieldsCol="a.id, a.siren, a.sirenValide, CONCAT(a.source,'-',a.parutionIdJal) as source, 0 as Bodacc_Num, a.dateSource as Bodacc_Date_Parution, 0 as Num_Annonce, '' as Rubrique_Bodacc, '' as Rubrique, 'Insertion' as typeAnnonce, '' as corrNum_Annonce, '' as corrBodacc_Date_Parution, '' as corrPage, '' as corrNumParution, '' AS corrTexteRectificatif, '' as RC, a.raisonSociale, '' AS nomCommercial, '' AS enseigne, '' AS nationalite, '' AS FJ, '' AS Capital, '' AS CapitalDev, a.tribunal as Tribunal_Code, adresse, '' AS adrNum, '' AS adrIndRep, '' AS adrTypVoie, '' AS adrLibVoie, '' AS adrComp1, '' AS adrComp2, a.codePostal*1 AS codePostal, a.ville, adresse AS adresseSiege, '' AS adrSiegeNum, '' AS adrSiegeIndRep, '' AS adrSiegeTypVoie, '' AS adrSiegeLibVoie, '' AS adrSiegeComp1, '' AS adrSiegeComp2, a.codePostal*1 as codePostalSiege, a.ville as villeSiege, nouvDir AS administration, nouvActivite as activite, CONCAT(a.typeEven,'',REPLACE(strEven,';','')) AS typeEven, '' AS commentaires, a.dateEffetFinP as dateEffet, '' AS publication, '' AS publicationNom, '' AS publicationDate, '' AS fusion, '' AS dateDebutActivite, '' as dateCessationActivite, a.dateCessationPaiement, a.dateJugement, '' AS Numero, montant AS VenteMt, 'EUR' AS VenteDev, '' AS bienAcqui, inter1type, inter1id, inter1nom AS Mandataire, inter1nom AS mandNom, '' AS mandRepr, '' AS mandAdresse, '' AS mandCP, '' AS mandVille, '' AS JugeCommissaire, '' AS jugeCommissaireSuppleant, inter2type, inter2id, inter2nom AS ReprCreanciers, inter2nom AS creaNom, '' AS creaRepr, '' AS creaAdresse, '' AS creaCP, '' AS creaVille, inter3type, inter3id, inter3nom AS administrateur, inter3nom AS admNom, '' AS admRepr, '' AS admAdresse, '' AS admCP, '' AS admVille, 'O' AS inter4type, 0 AS inter4id, '' AS oppositions, '' AS oppoNom, '' AS oppoRepr, '' AS oppoAdresse, '' AS oppoCP, '' AS oppoVille, '' AS perimetre, '' AS dateFinDepotCreances, '' AS delaiDepotCreances, '' AS dateFinObservation, '' AS FinObservationBodacc, a.dateInsert"; + $tables='bodacc_detail d'; + $tablesCol='annonces a'; + $where='d.id IN (0'; + $whereCol='a.id IN (0'; + $fpDebug=fopen(REP_TEMP . $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.debug', 'w'); + $fpDebug2=fopen(REP_TEMP . $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.debugExclu', 'w'); + $tabNic=array(); + while ($annonce=$iDb->fetch(MYSQL_ASSOC)) { + if ($annonce['src']=='BOD') $where.=','.$annonce['id']; + else $whereCol.=','.$annonce['id']; + $codeComCour=substr(trim($annonce['adr_dep']),0,2).$annonce['adr_com']; + $txtDebug="Annonce n°".$annonce['id'].", siret=".$annonce['siren'].' '.$annonce['nic'].", Actif=".$annonce['actif'].", APET=".$annonce['ape_etab'].", APEN=".$annonce['ape_entrep'].", Commune=$codeComCour, CJ=".$annonce['cj']; + $tabNic['_'.$annonce['id'].'_'.$annonce['siren']]=array('nic'=>$annonce['nic'], + 'adr_dep'=>$annonce['adr_dep'], + 'adr_com'=>$annonce['adr_com'], + 'actif'=>$annonce['actif']); + fwrite($fpDebug, $txtDebug.EOL); + // Si hors périmètre des communes géographique et A6CMO + if ((strpos($clientIdentifiant, 'A6CMO')>0 || strpos($clientIdentifiant, 'ACTDEV')>0) && (!in_array($codeComCour, $tabCodeCom) || $annonce['actif']==0)) { + fwrite($fpDebug2, $txtDebug.EOL); + continue; + } + } + $where.=')'; + $whereCol.=')'; + fclose($fpDebug); + fclose($fpDebug2); + + if ($collecte) { + $query ="SELECT $fields FROM $tables WHERE $where UNION SELECT $fieldsCol FROM $tablesCol WHERE $whereCol"; + echo date ('Y/m/d - H:i:s')." - $query;".EOL; + $res=$iDb->query($query); + $nbAnnonces=mysql_num_rows($res); + $strCollecte='(avec Collecte)'; + //die(mysql_error().EOL); + } else { + + echo date ('Y/m/d - H:i:s')." - SELECT $fields FROM $tables WHERE $where".EOL; + $nbAnnonces=$iDb->select($tables, $fields, $where, true, MYSQL_ASSOC, true); // Gérer la table surveillance + $strCollecte='(Bodacc seul)'; + } + + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : $nbAnnonces liens entrep/annonces à traiter...".EOL; + } + + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Début de génération du fichier client en version $versionEvenClient...".EOL; + + //echo date ('Y/m/d - H:i:s')." - SELECT $fields FROM $tables WHERE $where".EOL; + + //while(=$iDb->fetch(MYSQL_ASSOC)) { + $fpDebug=fopen(REP_TEMP . $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.debugProd', 'w'); + $fpDebug2=fopen(REP_TEMP . $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.debugProdExclu', 'w'); + + while ($annonce=$iDb->fetch(MYSQL_ASSOC)) { + + /** Marquer les liens REF/SIREN envoyées à chaque client + **/ + + $numInter=0; + $inter=$interType=array(); + /*if ($annonce['mandNom']<>'' || $annonce['mandCP']<>0) { + $inter[$numInter]['type']='M'; // Type d'intervenant A : Mand/Adm/ReprCre/Oppo + $inter[$numInter]['SIRET']=0; + $inter[$numInter]['Nom']=$annonce['mandNom']; + $inter[$numInter]['Repr']=$annonce['mandRepr']; + $inter[$numInter]['adrNum']=''; + $inter[$numInter]['adrBis']=''; + $inter[$numInter]['adrType']=''; + $inter[$numInter]['adrLib']=$annonce['mandAdresse']; + $inter[$numInter]['CP']=$annonce['mandCP']; + $inter[$numInter]['Ville']=$annonce['mandVille']; + $inter[$numInter]['Tel']=''; + $numInter++; + //$interType[]='M'; + } + if ($annonce['creaNom']<>'' || $annonce['creaCP']<>0) { + $inter[$numInter]['type']='R'; // Type d'intervenant A : Mand/Adm/ReprCre/Oppo + $inter[$numInter]['SIRET']=0; + $inter[$numInter]['Nom']=$annonce['creaNom']; + $inter[$numInter]['Repr']=$annonce['creaRepr']; + $inter[$numInter]['adrNum']=''; + $inter[$numInter]['adrBis']=''; + $inter[$numInter]['adrType']=''; + $inter[$numInter]['adrLib']=$annonce['creaAdresse']; + $inter[$numInter]['CP']=$annonce['creaCP']; + $inter[$numInter]['Ville']=$annonce['creaVille']; + $inter[$numInter]['Tel']=''; + $numInter++; + //$interType[]='R'; + } + if ($annonce['admNom']<>'' || $annonce['admCP']<>0) { + $inter[$numInter]['type']='A'; // Type d'intervenant A : Mand/Adm/ReprCre/Oppo + $inter[$numInter]['SIRET']=0; + $inter[$numInter]['Nom']=$annonce['admNom']; + $inter[$numInter]['Repr']=$annonce['admRepr']; + $inter[$numInter]['adrNum']=''; + $inter[$numInter]['adrBis']=''; + $inter[$numInter]['adrType']=''; + $inter[$numInter]['adrLib']=$annonce['admAdresse']; + $inter[$numInter]['CP']=$annonce['admCP']; + $inter[$numInter]['Ville']=$annonce['admVille']; + $inter[$numInter]['Tel']=''; + $numInter++; + //$interType[]='A'; + } + /* if ($annonce['oppoNom']<>'' || $annonce['oppoCP']<>0) { + $inter[$numInter]['type']='O'; // Type d'intervenant A : Mand/Adm/ReprCre/Oppo + $inter[$numInter]['SIRET']=0; + $inter[$numInter]['Nom']=$annonce['oppoNom']; + $inter[$numInter]['Repr']=$annonce['oppoRepr']; + $inter[$numInter]['adrNum']=''; + $inter[$numInter]['adrBis']=''; + $inter[$numInter]['adrType']=''; + $inter[$numInter]['adrLib']=$annonce['oppoAdresse']; + $inter[$numInter]['CP']=$annonce['oppoCP']; + $inter[$numInter]['Ville']=$annonce['oppoVille']; + $inter[$numInter]['Tel']=''; + $numInter++; + //$interType[]='O'; + + }*/ + + $avecMand=false; + $tabEven2=explode(';',$annonce['typeEven']); + if ($annonce['siren']*1>100 && (count($interType)==0 || $collecte)) + foreach ($tabEven2 as $even) + if (substr($even,0,1)*1==1 || substr($even,0,1)*1==5) + $avecMand=true; + + if ($avecMand) { + /** On doit recherche des mandataires absent ou non décodés de l'annonce Bodacc Texte **/ + $tabTypes=array('A','C','L','M','R','O'); + //for($iInter=1; $iInter<4; $iInter++) { + for($iInter=1; $iInter<3; $iInter++) { + $tabMand=$iDb2->select( + /*'annonces', 'inter'.$iInter.'type, inter'.$iInter.'id, inter'.$iInter.'nom, complement', + 'siren='.$annonce['siren']." AND inter".$iInter."type IN ('".implode("','", $tabTypes)."') AND (inter".$iInter."id>0 OR inter".$iInter."nom<>'' OR complement LIKE 'Mandataire%') ORDER BY dateInsert DESC", + false, MYSQL_ASSOC);*/ + 'rncs_jugements', 'adm'.$iInter.'type AS inter'.$iInter.'type, adm'.$iInter.'id AS inter'.$iInter.'id, adm'.$iInter.'nom AS inter'.$iInter."nom, '' AS complement".', adm'.$iInter.'adrNum, adm'.$iInter.'adrInd, adm'.$iInter.'adrType, adm'.$iInter.'adrLibVoie, adm'.$iInter.'adrVoie, adm'.$iInter.'adr1, adm'.$iInter.'adr2, adm'.$iInter.'adr3, adm'.$iInter.'adrCP, adm'.$iInter.'adrVille', + 'siren='.$annonce['siren']." AND adm".$iInter."type IN ('".implode("','", $tabTypes)."') AND (adm".$iInter."id>0 OR adm".$iInter."nom<>'') ORDER BY dateInsert DESC", + false, MYSQL_ASSOC); + //print_r($tabMand); + //die(mysql_error()); + $interNom=$interTel=$interCp=$interVille=''; + $interSiren=0; + foreach ($tabMand as $mand) { + // As t'on déjà traité ce type de mandataire ? + if (in_array($mand['inter'.$iInter.'type'],$interType)) continue; + $mandId=$mand['inter'.$iInter.'id']; + $interNom=strtoupper($mand['inter'.$iInter.'nom']); + $inter[$numInter]['Repr']=''; + //, , , , adm'.$iInter.'adrVoie, adm'.$iInter.'adr1, adm'.$iInter.'adr2, adm'.$iInter.'adr3, ', + $inter[$numInter]['adrNum']=$mand['adm'.$iInter.'adrNum']; + $inter[$numInter]['adrBis']=$mand['adm'.$iInter.'adrInd']; + $inter[$numInter]['adrType']=trim(strtoupper($mand['adm'.$iInter.'adrType'])); + $inter[$numInter]['adrLib']=trim(strtoupper($mand['adm'.$iInter.'adrLibVoie'])); + $inter[$numInter]['CP']=$mand['adm'.$iInter.'adrCP']; + $inter[$numInter]['Ville']=trim(strtoupper($mand['adm'.$iInter.'adrVille'])); + if ($mandId>0) { + // Il y a un mandataire avec un identifiant numérique + $tabTmp=$iDb2->select( 'tabMandataires', 'id, sirenGrp, sirenMand, Nom, Prenom, type, adresse, adresseComp, cp, ville, tel, fax, email, web', 'id='.$mandId, true, MYSQL_ASSOC); + $mand2=$tabTmp[0]; + $adr=$iInsee->structureVoie($mand2['adresse']); + $interNom=$mand2['Nom']; + $interSiren=$mand2['sirenMand']*1; + if ($interSiren==0) $interSiren=$mand2['sirenGrp']*1; + $interCp=$mand2['cp']*1; + $interVille=strtoupper($mand2['ville']); + $interTel=strtr($mand2['tel'],array(' '=>'',','=>'','.'=>'', '-'=>'/','-'=>''))*1; + /* else { + // Il y a un mandataire sans identifiant numérique + + if (trim($mand['inter'.$iInter.'nom'])=='' && substr($mand['complement'],0,10)=='Mandataire') + // Uniquement avec le nom du mandataire en complément + $interNom=substr($mand['complement'],13,strlen($mand['complement'])-13); + else { + if (preg_match('/^(.*), Téléphone \: (.*)$/Ui', $mand['inter'.$iInter.'nom'], $matches)) { + $interTel=strtr($matches[2],array(' '=>'',','=>'','.'=>'', '-'=>'/','-'=>''))*1; + $mand['inter'.$iInter.'nom']=$matches[1]; + } + $tabTmp=explode(' ', $mand['inter'.$iInter.'nom']); + if (count($tabTmp)>1) { + $interNom=$tabTmp[0]; + unset($tabTmp[0]); + $adr=$iInsee->structureVoie(trim(implode(' ', $tabTmp))); + $interCp=$adr['cp']*1; + $interVille=$adr['ville']; + } + // echo $mand['inter'.$iInter.'nom']." : Nom=$interNom, Tél=$interTel, Adresse="; + // print_r($adr); + }*/ + $inter[$numInter]['type']=$mand['inter'.$iInter.'type']; // Type d'intervenant A : Mand/Adm/ReprCre/Oppo + $inter[$numInter]['SIRET']=$interSiren.'00000'; + $inter[$numInter]['Nom']=trim(strtoupper($interNom)); + $inter[$numInter]['Repr']=''; + $inter[$numInter]['adrNum']=$adr['num']; + $inter[$numInter]['adrBis']=$adr['indRep']; + $inter[$numInter]['adrType']=trim(strtoupper($adr['typeVoie'])); + $inter[$numInter]['adrLib']=trim(strtoupper($adr['libVoie'])); + $inter[$numInter]['CP']=$interCp; + $inter[$numInter]['Ville']=trim(strtoupper($interVille)); + $inter[$numInter]['Tel']=$interTel; + $numInter++; + $interType[]=$mand['inter'.$iInter.'type']; + } + } + } + } + + //print_r($inter); + //print_r($interType); + //die(); + + $tribunalCode=$annonce['Tribunal_Code']; + $refLigneClient=@$annonce['ref']; + + //ICI// + $iDb2->update('surveillances_listes', array('dateDerEnvoi'=>DATETIME),"idClient='$clientIdentifiant' AND siren='".$annonce['siren']."' AND ref='$refLigneClient'"); + + $tabEven=array(); + $rubEven=''; + foreach ($tabEven2 as $even) { + /** Version de l'évènement **/ + $versionEven=$iBodacc->getVersionEvenement($even); + if ($versionEven==0 || $versionEven<=$versionEvenClient) + $tabEven[]=$even; + else { + if ($even<2000) $even2=1999; + elseif ($even<3000) $even2=2312; + elseif ($even<4000) $even2=3999; + elseif ($even<5000) $even2=4999; + elseif ($even<6000) $even2=5999; + elseif ($even<7000) $even2=6700; + else $even2=1999; + $tabEven[]=$even2; + // echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Evènement $even non géré en v$versionEvenClient : $even2".EOL; + } + /** Détection du Chapitre **/ + $rubEven=$iBodacc->getChapitreEvenement($even); + } + /** Comptage des annonces par rubriques **/ + if ($annonce['Rubrique']<>'') $tabRubFic[$annonce['Rubrique']]++; + elseif ($rubEven<>'') $tabRubFic[$rubEven]++; + + $tabTmp=explode('-', $annonce['source']); + $source=$tabTmp[0]; + if ($source=='BOD') + $codeSourceBodacc=substr($annonce['Rubrique_Bodacc'],0,1); + else { + switch (substr($annonce['source'],0,1)) { + case 'G': // G=Greffes + case 'P': // P=Inpi + case 'J': // J=Journal d'Annonces Légales + case 'T': // T=Tribunal + $codeSourceBodacc=substr($annonce['source'],0,1); break; + default: $codeSourceBodacc='J'; break; + } + } + + // Récupération des informations de l'établissement + $annonce['nic']=$tabNic['_'.$annonce['id'].'_'.$annonce['siren']]['nic']; + $annonce['adr_dep']=$tabNic['_'.$annonce['id'].'_'.$annonce['siren']]['adr_dep']; + $annonce['adr_com']=$tabNic['_'.$annonce['id'].'_'.$annonce['siren']]['adr_com']; + $annonce['actif']=$tabNic['_'.$annonce['id'].'_'.$annonce['siren']]['actif']; + + $codeComCour=substr(trim($annonce['adr_dep']),0,2).$annonce['adr_com']; + + $txtDebug="Annonce n°".$annonce['id'].", siret=".$annonce['siren'].' '.$annonce['nic'].", Actif=".$annonce['actif'].", APET=".$annonce['ape_etab'].", APEN=".$annonce['ape_entrep'].", Commune=$codeComCour, CJ=".$annonce['cj']; + fwrite($fpDebug, $txtDebug.EOL); + + // Si l'annonce A6CMO est hors périmètre notamment des communes géographique, ne pas produire $str + if ((strpos($clientIdentifiant, 'A6CMO')>0 || strpos($clientIdentifiant, 'ACTDEV')>0) && (!in_array($codeComCour, $tabCodeCom) || $annonce['actif']==0)) { + fwrite($fpDebug2, $txtDebug.EOL); + continue; + } + + + if ($tabOptOutput[200]==true) { + $str=genereLigne200($annonce['siren'], $annonce['nic']); + fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE).$optionEOL); + $nbLignes++; + } + if ($tabOptOutput[400]==true) { + $str=genereLignes400($annonce['siren'], $nbLignes, $optionEOL); + fwrite($fp, $str); + } + //$annonce['nic'].", APET=".$annonce['ape_etab'].", APEN=".$annonce['ape_entrep'].", Commune=".$annonce['adr_dep'].$annonce['adr_com'].", CJ=".$annonce['cj'].EOL; + + $str= initstr('100', 3, '0', ALIGN_RIGHT) . // Type de ligne + initstr($annonce['id'], 10, '0', ALIGN_RIGHT) . // Numéro unique d'identification interne d'une annonce + initstr($annonce['siren'], 9, '0', ALIGN_RIGHT) . // Siren de l'entreprise concernée par l'annonce + initstr($annonce['nic'], 5, '0', ALIGN_RIGHT) . // NIC de l'établissement + initstr($annonce['Bodacc_Num'], 3, '0', ALIGN_RIGHT) . // Numéro de parution du Bodacc dans l'année + initstr($codeSourceBodacc, 1) . // Code Bodacc (A, B ou C) + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['Bodacc_Date_Parution']), 8) . // Date de parution du Bodacc + initstr($annonce['Num_Annonce'], 5, '0', ALIGN_RIGHT) . // Numéro de l'annonce dans le Bodacc + initstr(substr($annonce['Rubrique_Bodacc'],1,3), 3, '0') . // Rubrique dans le Bodacc + initstr($annonce['typeAnnonce'], 1) . // Type d'annonce Bodacc : I=Insertion, A=Additif, + // R=Rectif, S=Suppression + initstr($annonce['corrNum_Annonce'], 5, '0', ALIGN_RIGHT) . // Si annonce diff. de I, numéro de l'annonce corrigée + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['corrBodacc_Date_Parution']), 8) . // Si diff. I, date du Bodacc de l'annonce corrigée + initstr($annonce['corrPage'], 6, '0', ALIGN_RIGHT) . // Si diff. I, page du Bodacc de l'annonce corrigée + initstr($annonce['corrNumParution'], 4, '0', ALIGN_RIGHT) . // Si diff. I, Num parut°/année de annonce corrigée + // (ex: 230A, 001B) + // initstr($annonce['corrTexteRectificatif'], XXXXXX, '0', ALIGN_RIGHT) . // Si diff. I, + // initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateInsert']), 8, '0') . // Date de l'intégration en bae S&D + + initstr($refLigneClient, 18) . // REFERENCE DU CLIENT + initstr($tribunalCode, 6) . + initstr($annonce['RC'], 9) . // Numéro de RC (Registre du Commerce) de l'entreprise + initstr($annonce['raisonSociale'], 150) . // Raison sociale de l'entreprise + initstr($annonce['nomCommercial'], 100) . // Nom commercial de l'entreprise + initstr($annonce['enseigne'], 100) . // Enseigne de l'établissement + initstr($annonce['nationalite'], 30) . // Nationalité si Personne physique + //initstr(MInsee::getFJInsee($annonce['siren']), 4) . // FJ codification Insee + initstr('0000', 4) . // FJ codification Insee + initstr($annonce['FJ'], 90) . // Forme juridique de l'entreprise déclarée au BODACC + initstr(round($annonce['Capital']), 15, '0', ALIGN_RIGHT) . // Capital + initstr($annonce['CapitalDev'], 3) . // Devise du capital (format ISO) + // Adresse / 150 car + initstr($annonce['adrNum'], 4, '0', ALIGN_RIGHT) . // + initstr($annonce['adrIndRep'], 1) . // + initstr($annonce['adrTypVoie'], 5) . + initstr($annonce['adrLibVoie'], 50) . + initstr($annonce['adrComp1'], 50) . + initstr($annonce['adrComp2'], 40) . + initstr($annonce['codePostal'], 5, '0', ALIGN_RIGHT) . // Code Postal de l'établissement + initstr($annonce['villeSiege'], 45) . // Ville de l'établissement + // Adresse du siège / 150 car + initstr($annonce['adrNumSiege'], 4, '0', ALIGN_RIGHT) . // + initstr($annonce['adrIndRepSiege'], 1) . // + initstr($annonce['adrTypVoieSiege'], 5) . + initstr($annonce['adrLibVoieSiege'], 50) . + initstr($annonce['adrComp1Siege'], 50) . + initstr($annonce['adrComp2Siege'], 40) . + initstr($annonce['codePostalSiege'], 5, '0', ALIGN_RIGHT) . // Code Postal de l'établissement + initstr($annonce['villeSiege'], 45) . // Ville de l'établissement + initstr(implode('',$tabEven), 32, '0', ALIGN_RIGHT) . // Code Evènement Bodacc n°1 à 8 + initstr($annonce['publicationNom'], 100) . // NOM du JAL si publication + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['publicationDate']), 8) . // Date de publication du JAL si publication + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateCessationPaiement']), 8) . // Date de cessation des paiements + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateJugement']), 8) . // Date du jugement + initstr(FILLER, 1) . // FILLER (Replace type de création) + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateDebutActivite']), 8) . // Date de début d'activité + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateEffet']), 8) . // Date d'effet (Ventes/MMD) + // ou Date clôture exercice si ann dépôt comptes + initstr(round($annonce['VenteMt']), 15, '0', ALIGN_RIGHT) . // Montant de la vente + initstr($annonce['VenteDev'], 3) . // Devise de la ventre + initstr($annonce['Numero'], 35) . // Numéro de l'affaire au greffe + initstr($inter[0]['type'], 1) . // Type d'intervenant A : Mand/Adm/ReprCre/Oppo + initstr($inter[0]['SIRET'], 14, '0', ALIGN_RIGHT) . // Intervenant A : Siret + initstr($inter[0]['Nom'], 80) . // Raison sociale + initstr($inter[0]['Repr'], 80) . // Représentant + initstr($inter[0]['adrNum'], 4, '0', ALIGN_RIGHT) . // Adresse, numéro dans la voie + initstr($inter[0]['adrBis'], 1) . // Adresse, Bis/Ter + initstr($inter[0]['adrType'], 4) . // Adresse, type de voie + initstr($inter[0]['adrLib'], 32) . // Adresse, libellé de la voie + initstr($inter[0]['CP'], 5, '0', ALIGN_RIGHT) . // Adresse, code Postal + initstr($inter[0]['Ville'], 45) . // Adresse, commune + initstr($inter[0]['Tel'], 10, '0', ALIGN_RIGHT) . // Téléphone + initstr($inter[1]['type'], 1) . // Type d'intervenant A : Mand/Adm/ReprCre/Oppo + initstr($inter[1]['SIRET'], 14, '0', ALIGN_RIGHT) . // Intervenant A : Siret + initstr($inter[1]['Nom'], 80) . // Raison sociale + initstr($inter[1]['Repr'], 80) . // Représentant + initstr($inter[1]['adrNum'], 4, '0', ALIGN_RIGHT) . // Adresse, numéro dans la voie + initstr($inter[1]['adrBis'], 1) . // Adresse, Bis/Ter + initstr($inter[1]['adrType'], 4) . // Adresse, type de voie + initstr($inter[1]['adrLib'], 32) . // Adresse, libellé de la voie + initstr($inter[1]['CP'], 5, '0', ALIGN_RIGHT) . // Adresse, code Postal + initstr($inter[1]['Ville'], 45) . // Adresse, commune + initstr($inter[1]['Tel'], 10, '0', ALIGN_RIGHT) . // Téléphone + initstr(FILLER/*$annonce['JugeCommissaireNom']*/, 30) . // NOM du JugeCommissaire + initstr(FILLER/*$annonce['JugeCommissairePrenom']*/, 30) . // Prénom du JugeCommissaire + initstr(FILLER/*$annonce['JugeCommissaireSupplNom']*/, 30) . // NOM du JugeCommissaire suppléant + initstr(FILLER/*$annonce['JugeCommissaireSupplPrenom']*/, 30) . // Prénom du JugeCommissaire suppléant + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateFinDepotCreances']), 8) . // Date limite pour le dépôt des créances + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateFinObservation']), 8) . // Date de fin de la période d'observation + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['dateInsert']), 8) . // Date d'insertion dans la base S&D + ''; + fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE).$optionEOL); + $nbLignes++; + // if ($tabOptOutput['commentaire']==true && $annonce['commentaires']<>'') + // fwrite($fp, '101'.initsrt($annonce['commentaires'],1500).$eol); // Commentaire textuel si nécessaire + $enteteL= initstr($annonce['id'], 10, '0', ALIGN_RIGHT) . // Numéro unique d'identification interne d'une annonce + initstr($annonce['siren'], 9, '0', ALIGN_RIGHT) . // Siren de l'entreprise concernée par l'annonce + initstr($annonce['nic'], 5, '0', ALIGN_RIGHT) . // NIC de l'établissement + initstr($annonce['Bodacc_Num'], 3, '0', ALIGN_RIGHT) . // Numéro de parution du Bodacc dans l'année + initstr($codeSourceBodacc, 1) . // Code Bodacc (A, B ou C) + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['Bodacc_Date_Parution']), 8) . // Date de parution du Bodacc + initstr($annonce['Num_Annonce'], 5, '0', ALIGN_RIGHT) . // Numéro de l'annonce dans le Bodacc + initstr(substr($annonce['Rubrique_Bodacc'],1,3), 3, '0') . // Rubrique dans le Bodacc + initstr($annonce['typeAnnonce'], 1) . // Type d'annonce Bodacc : I=Insertion, A=Additif, + // R=Rectificatif, S=Suppression + initstr($annonce['corrNum_Annonce'], 5, '0', ALIGN_RIGHT) . // Si annonce différent de I, numéro de l'annonce corrigée + initstr(WDate::dateT('Y-m-d','Ymd',$annonce['corrBodacc_Date_Parution']), 8) . // Si diff. I, date du Bodacc de l'annonce corrigée + initstr($annonce['corrPage'], 6, '0', ALIGN_RIGHT) . // Si diff. I, page du Bodacc de l'annonce corrigée + initstr($annonce['corrNumParution'], 4, '0', ALIGN_RIGHT) . // Si diff. I, Num parution dans l'année de annonce corri(ex: 230A, 001B) + initstr($refLigneClient, 18) . // REF CLI + ''; + + if ($tabOptOutput[101]==true && $annonce['commentaires']<>'') // Commentaires + fwrite($fp, genereMultiLigne('101', $enteteL, $annonce['commentaires'], $optionEOL, $nbLignes)); + if ($tabOptOutput[102]==true && $annonce['activite']<>'') // Activité déclarée au Bodacc + fwrite($fp, genereMultiLigne('102', $enteteL, $annonce['activite'], $optionEOL, $nbLignes)); + if ($annonce['corrTexteRectificatif']<>'') // Texte rectificatif + fwrite($fp, genereMultiLigne('103', $enteteL, $annonce['corrTexteRectificatif'], $optionEOL, $nbLignes)); + if ($tabOptOutput[104]==true) { // Annonce Bodacc Complète + if ($collecte && substr($annonce['source'],0,3)<>'BOD' ) { + $tabCollecte=$iInsee->getProColPart($annonce['siren']); + foreach ($tabCollecte as $annCollecte) { + $idAnn2=('0.'.$annonce['id'])*1.0; + if ($annCollecte['id']==$idAnn2) { + $annoncetxt=str_replace(' RCS Tribunal inconnu.',' RCS.', $annCollecte['texteAnnonce']); + break; + } + } + } else { + $annoncetxt=$iDb2->select('bodacc', 'annonce', 'id='.$annonce['id'], false); + $annoncetxt=$annoncetxt[0][0]; + } + fwrite($fp, genereMultiLigne('104', $enteteL, $annoncetxt, $optionEOL, $nbLignes)); + } + if ($tabOptOutput[105]==true) { // Liste des dirigeants + $annonceDir=$iDb2->select('bodacc_dirigeants', 'id, num, dateEffet, fonction, rs, nom, prenom, nomUsage', 'id='.$annonce['id'], true); + $strDir=''; + foreach ($annonceDir as $k=>$dir) { + $strDir.=initstr(WDate::dateT('Y-m-d','Ymd',$dir['dateEffet']), 8, '0', ALIGN_RIGHT) . // Date de la prise de fonction + initstr($dir['fonction'], 4) . // Code Fonction S&D + initstr($dir['rs'], 80) . // Raison Sociale du dirigeant + initstr($dir['nom'], 50) . // NOM du dirigeant + initstr($dir['prenom'], 100) . // Prenom + initstr($dir['usage'], 50); // Nom d'usage + if ($k%6==0) $strDir.=initstr(' ', 28); + else $strDir.=initstr(' ', 26); + } + fwrite($fp, genereMultiLigne('105', $enteteL, $strDir, $optionEOL, $nbLignes)); + } + if ($nbLignes%1000==1) echo date ('Y/m/d - H:i:s')." - Nb lignes=$nbLignes\n"; + } + + fclose($fpDebug); + fclose($fpDebug2); + + /** + ** On génère la ligne de fin de fichier + **/ + $nbLignes++; + $dateFinFichier=date('YmdHis'); + $str= initstr('999', 3, '0', ALIGN_RIGHT) . // Type de ligne + initstr($dateFinFichier, 14) . // Date & Heure de fin génération du fichier + initstr($clientNumTourFichier, 10, '0', ALIGN_RIGHT) . // Numéro de tour du fichier pour le client + initstr($clientIdentifiant, 36) . // Identifiant Client + initstr($typePrestaton, 32) . // Type de prestation + initstr($nbLignes, 10, '0', ALIGN_RIGHT) . // Nombre de lignes Total du fichier + ''; + fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE)); // Pas de fin de ligne sur la dernière ligne + fclose($fp); + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient :Fichier client terminé.".EOL; + //die(); + + /** Mise à jour des numéros de tour et des date de dernières exécutions + **/ + if ($incrementationDesTour) { + $iDbCrm=new WDB('sugarcrm'); + $rep=$iDbCrm->update('cases_cstm', array('trtdatederniereexec_c'=>$dateFinFichier, 'trtnumerotour_c'=> $clientNumTourFichier), + "id_c='".$tabAdherent['idPrestationBdd']."'"); + } + + if ($clientIdentifiant=='SURBODPRDSFTPSFRBT') { + // Copie du fichier pour SFR + $fichierIn=$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt'; + if (!copy(REP_TEMP.$fichierIn, NEWCLIENTS_PATH.'sfrbtr/recv/'.$fichierIn)) + echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $fichierIn impossible pour le spécifique SFR !".EOL; + else + echo date ('Y/m/d - H:i:s')." - Le fichier $fichierIn a été créé pour SFR...".EOL; + + // Remplissage de la table sdv1.flux_fileout avec les informations de traitement SFR + $tabSFR=array( 'client' => 'sfrbtr', + 'name' => 'FICH_RCE', + 'nbLines' => $nbLignes, // Nombre de ligne du fichier + 'dateBegin' => $dateDebFichier, // Date de début du traitement Y-m-d H:i:s + 'dateEnd' => $dateFinFichier, // Date de fin du traitement Y-m-d H:i:s + 'fileOut' => basename($fichierIn), //Nom du fichier uniquement + 'depotType' => 'SFTP', + 'depotDir' => 'recvsurv', + 'depotDate' => '0000-00-00 00:00:00', + ); + $iDb3=new WDB('sdv1'); + $iDb3->insert('flux_fileout', $tabSFR, false); + } + + + /** Conversion du fichier si nécessaire en CSV + **/ + if ($tabAdherent['formatEnvois']=='csv') { + $ligneOut=''; + $ligne001=$ligne100=$ligne104=$ligne999=0; + $tabLignes=file(REP_TEMP. $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt'); + $fichier_csv=$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.csv'; + $fp=fopen(REP_TEMP . $fichier_csv, 'w'); + foreach ($tabLignes as $i=>$ligne) { + $ecrireLignePre=false; + $typeLigne=substr($ligne, 0, 3)*1; + switch ($typeLigne) { + case 1: // Ligne ignorée + // Ecriture de l'entête + $siren ='Siren'; + $nic ='Nic'; + $ref ='Référence'; + $numPar ='Parution'; + $bodacc ='Bodacc'; + $datePar='Date parution'; + $numAnn ='Numéro Annonce'; + $cor ='Type Annonce'; + $libTri ='Tribunal'; + $numRC ='Numéro RCS'; + $raisonS='Raison sociale'; + $catEven='Chapitre'; + $txtEven='Evènement(s)'; + $dateEve='Date évènement'; + $txtAnn ='Texte Annonce'; + $ligne001++; + break; + case 100: // Structure Bodacc + $ligneOut="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$dateEve;$txtAnn"; + $ligne100++; + $siren = substr($ligne, 13 , 9 ); // Siren de l'entreprise concernée par l'annonce + $nic = trim(substr($ligne, 22, 5 )); // Nic + $ref = trim(substr($ligne, 71, 18 )); // Référence Client + $numPar = substr($ligne, 27 , 3 ); // Numéro de parution du Bodacc dans l'année + $bodacc = substr($ligne, 30 , 1 ); // Code Bodacc (A, B ou C) A, B ou C + $datePar= WDate::dateT('Ymd','d/M/Y',substr($ligne,31,8)); // Date de parution du Bodacc Format AAAAMMJJ + $numAnn = substr($ligne, 39 , 5 ); // Numéro de l'annonce dans le Bodacc + $typeAnn= substr($ligne, 47 , 1 ); // Type d'annonce Bodacc I=Insertion (publication d'une annonce), A=Additif (ajout à une précédente annonce), (1) R=Rectificatif (correction d'une annonce), S=Suppression d'une annonce + $corNumA= substr($ligne, 48 , 5 ); // Numéro de l'annonce corrigée Si annonce différent de Insertion + $corDate= substr($ligne, 53 , 8 ); // Date du Bodacc de l'annonce corrigée Si annonce différent de Insertion. Format AAAAMMJJ + $corPage= substr($ligne, 61 , 6 ); // Première page du Bodacc de l'annonce corrigée Si annonce différent de Insertion + $corNumP= substr($ligne, 67 , 4 ); // Numéro parution du Bodacc dans l'année de l'annonce corrigée Si annonce différent de Insertion + $dateEve1=substr($ligne, 1144, 8 ); // Date de jugezment + $dateEve2=substr($ligne, 1161, 8 ); // Date d'effet, etc... + if ($dateEve1>0) + $dateEve=WDate::dateT('Ymd','d/M/Y',$dateEve1); + elseif ($dateEve2>0) + $dateEve=WDate::dateT('Ymd','d/M/Y',$dateEve2); + else + $dateEve=''; + $cor=''; + if ($typeAnn<>'I') $cor=" - Annonce n°$corNumA $corNumP, page $corPage, du ".WDate::dateT('Ymd','d/M/Y',$corDate); + switch($typeAnn) { + case 'I': $cor='Insertion'.$cor; break; + case 'A': $cor='Additif'.$cor; break; + case 'R': $cor='Rectificatif'.$cor; break; + case 'S': $cor='Suppression'.$cor; break; + default: break; + } + $codeTri= substr($ligne, 89 , 6 ); // Code Tribunal Codification interne utilisée par le Bodacc + $libTri=$iBodacc->getTribunalNom($codeTri); + + $numRC = trim(substr($ligne, 95 , 9 )); // Numéro de RC (Registre du Commerce) de l'entreprise + $raisonS= trim(substr($ligne, 104 , 150 )); // Raison sociale de l'entreprise + $even=array(); + $even[7]= substr($ligne, 996 , 4 )*1; // Code Evènement Bodacc n°1 Cf. Table EVEN + $even[6]= substr($ligne, 1000, 4 )*1; // Code Evènement Bodacc n°2 Cf. Table EVEN + $even[5]= substr($ligne, 1004, 4 )*1; // Code Evènement Bodacc n°3 Cf. Table EVEN + $even[4]= substr($ligne, 1008, 4 )*1; // Code Evènement Bodacc n°4 Cf. Table EVEN + $even[3]= substr($ligne, 1012, 4 )*1; // Code Evènement Bodacc n°5 Cf. Table EVEN + $even[2]= substr($ligne, 1016, 4 )*1; // Code Evènement Bodacc n°6 Cf. Table EVEN + $even[1]= substr($ligne, 1020, 4 )*1; // Code Evènement Bodacc n°7 Cf. Table EVEN + $even[0]= substr($ligne, 1024, 4 )*1; // Code Evènement Bodacc n°8 Cf. Table EVEN + $txtEven=''; + foreach ($even as $codeEven) + if ($codeEven<>0) { + $txtEven.=$iBodacc->getEvenement($codeEven)." ($codeEven), "; + $catEven=$iBodacc->getChapitreEvenement($codeEven); + } + else + $txtEven.=''; + $txtEven=substr($txtEven,0,strlen($txtEven)-2); + $txtAnn=''; + $ecrireLignePre=true; + break; + case 104: // Annonce + $ligne104++; + $txtAnn=trim($txtAnn.' '.str_replace(';','.',trim(substr($ligne, 89 , 1910)))); // Texte Annonce + break; + case 999: // Ligne ignorée + $ligneOut="$siren;$nic;$ref;$numPar;$bodacc;$datePar;$numAnn;$cor;$libTri;$numRC;$raisonS;$catEven;$txtEven;$dateEve;$txtAnn"; + $ligne999++; + $ecrireLignePre=true; + break; + default: // Ligne non gérée + break; + } + if ($ecrireLignePre) fwrite($fp, $ligneOut.EOL); + } + fclose($fp); + echo date ('Y/m/d - H:i:s')." - Conversion du fichier $fichier_csv terminée !".EOL; + } + /** Conversion du fichier si nécessaire en SO2000 + **/ + elseif ($tabAdherent['formatEnvois']=='specifique') { + $fichierIn=$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt'; + if (preg_match('/APICIL/',$fichierIn)) { $numeroAbonneBil='019400018'; $optionsIdBil='I'; } + // elseif (preg_match('/METRO/',$fichierIn)) { $numeroAbonneBil='013990040'; $optionsIdBil='IN'; } + $ret=conversionSd2So2000(REP_TEMP.$fichierIn, $numeroAbonneBil, '', $optionsIdBil); + if ($ret===true) + echo date('Y/m/d - H:i:s') . " - Conversion spécifique BIL/SO2000 (abonné $numeroAbonneBil) terminée !".EOL; + else + echo date('Y/m/d - H:i:s') . " - ERREUR lors de la conversion du fichier S&D $fichierIn en BIL/SO2000 (abonné $numeroAbonneBil) : $ret !".EOL; + } + + /*Gzip ou zip zt envoi par mail ou dépot sur le site FTP*/ + switch ($optionZip) { + case 'zip': + $zip = new ZipArchive; + $ficProduction=$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.zip'; + $res = $zip->open($repProduction.$ficProduction, ZipArchive::CREATE); + if ($res === TRUE) { +// $zip->addFromString('test.txt', 'file content goes here'); + $zip->addFile( REP_TEMP. $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt', + $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt'); + if ($tabAdherent['formatEnvois']=='csv') + $zip->addFile(REP_TEMP. $fichier_csv, $fichier_csv); + $zip->close(); + echo date ('Y/m/d - H:i:s')." - Compression du fichier ". $typePrestaton .'_'. $clientIdentifiant .'.zip OK...'.EOL; + } else { + echo date ('Y/m/d - H:i:s')." - ERREUR : Compression Zip du fichier ". $typePrestaton .'_'. $clientIdentifiant .'.txt impossible !'.EOL; + } + break; + case 'gzip': + $ficProduction= $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt.gz'; + $string=file_get_contents(REP_TEMP. $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt'); + $gz = gzopen($repProduction.$ficProduction,'w9'); + if (!$gz) { + echo date ('Y/m/d - H:i:s')." - ERREUR : Compression Gzip du fichier ". $typePrestaton .'_'. $clientIdentifiant .'.txt impossible !'.EOL; + } else { + gzwrite($gz, $string); + gzclose($gz); + echo date ('Y/m/d - H:i:s')." - Compression du fichier ". $typePrestaton .'_'. $clientIdentifiant .'.txt.gz OK...'.EOL; + } + + if ($tabAdherent['formatEnvois']=='csv') { + $ficProduction_csv= $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.csv.gz'; + $string=file_get_contents(REP_TEMP. $fichier_csv); + $gz = gzopen($repProduction.$ficProduction_csv,'w9'); + if (!$gz) { + echo date ('Y/m/d - H:i:s')." - ERREUR : Compression Gzip du fichier $fichier_csv impossible !".EOL; + } else { + gzwrite($gz, $string); + gzclose($gz); + echo date ('Y/m/d - H:i:s')." - Compression du fichier $ficProduction_csv OK...".EOL; + } + } + break; + case 'bzip2': + $ficProduction=$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt.bz2'; + $string=file_get_contents(REP_TEMP. $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt'); + $bz = bzopen($repProduction.$ficProduction,'w'); + // Ne sait pas si le niveau de compression 1 à 9 est implémenté pour cette fonction + if (!$bz) { + echo date ('Y/m/d - H:i:s')." - ERREUR : Compression Bzip2 impossible pour ". $typePrestaton .'_'. $clientIdentifiant .'.txt impossible !'.EOL; + } else { + bzwrite($bz, $string, strlen($string)); + bzclose($bz); + echo date ('Y/m/d - H:i:s')." - Compression du fichier ". $typePrestaton .'_'. $clientIdentifiant .'.txt.bz2 OK...'.EOL; + } + if ($tabAdherent['formatEnvois']=='csv') { + $ficProduction_csv= $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.csv.bz2'; + $string=file_get_contents(REP_TEMP. $fichier_csv); + $bz = bzopen($repProduction.$ficProduction_csv,'w'); + if (!$bz) { + echo date ('Y/m/d - H:i:s')." - ERREUR : Compression Bzip2 du fichier $fichier_csv impossible !".EOL; + } else { + bzwrite($bz, $string, strlen($string)); + bzclose($bz); + echo date ('Y/m/d - H:i:s')." - Compression du fichier $ficProduction_csv OK...".EOL; + } + } + break; + default: + $ficProduction= $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt'; + $ficProduction_csv= $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.csv'; + $ficProduction_bil= $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt.bil'; + if (!copy(REP_TEMP.$ficProduction, $repProduction.$ficProduction)) + echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $ficProduction impossible !".EOL; + else + echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction a été créé...".EOL; + if ($tabAdherent['formatEnvois']=='csv') { + if (!copy(REP_TEMP.$ficProduction_csv, $repProduction.$ficProduction_csv)) + echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $ficProduction_csv impossible !".EOL; + else + echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction_csv a été créé...".EOL; + } + break; + } + + /** Sauvegarde des fichiers dans clients **/ + $repBakClient=CLIENTS_PATH.strtolower($tabAdherent['nomClient']); + if (!file_exists($repBakClient)) { + echo date ('Y/m/d - H:i:s')." - ATTENTION : Les dossiers BACKUP du client ne sont pas correctement créés !".EOL; + if (!file_exists($repBakClient) && mkdir($repBakClient)) + echo date ('Y/m/d - H:i:s')." - Le dossier Backup du client a été créé ($repBakClient)".EOL; +// if (!file_exists($repFtpClient.'/recv') && mkdir($repFtpClient.'/recv')) +// echo date ('Y/m/d - H:i:s')." - Le dossier FTP/RECV du client a été créé ($repFtpClient/recv)".EOL; + } + if (!copy($repProduction.$ficProduction, $repBakClient.'/'.$ficProduction)) + echo date ('Y/m/d - H:i:s')." - ERREUR : Copy du fichier $ficProduction dans Backup impossible !".EOL; + else + echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction a été historisé...".EOL; + + if ($tabAdherent['formatEnvois']=='csv') { + if (!copy($repProduction.$ficProduction_csv, $repBakClient.'/'.$ficProduction_csv)) + echo date ('Y/m/d - H:i:s')." - ERREUR : Historisation du fichier $ficProduction_csv impossible !".EOL; + else + echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction_csv a été historisé...".EOL; + } elseif ($tabAdherent['formatEnvois']=='specifique') { + if (!copy($repProduction.$ficProduction_bil, $repBakClient.'/'.$ficProduction_bil)) { + if (!copy(REP_TEMP.$ficProduction_bil, $repBakClient.'/'.$ficProduction_bil)) + echo date ('Y/m/d - H:i:s')." - ERREUR : Historisation du fichier $ficProduction_bil impossible !".EOL; + else + echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction_bil a été historisé...".EOL; + } + } + + /** Envoi du fichier produit par mail + **/ + if ($mailTo) { + switch($tabAdherent['formatEnvois']) { + case 'csv': $tabAttached=array($repBakClient.'/'.$ficProduction_csv); break; + case 'specifique': $tabAttached=array($repBakClient.'/'.$ficProduction_bil); break; + default: $tabAttached=array($repBakClient.'/'.$ficProduction); break; + } + + $messageInfo="Bonjour, + + Veuillez trouver le fichier d'annonces Scores & Décisions relatives à votre abonnement. + + Bien Cordialement, + Le service Support. + + -- + + SCORES & DECISIONS + Service support + 1, rue de Clairefontaine - 78120 RAMBOUILLET + tél : 33 (0)1 75 43 80 10 + fax : 33 (0)1 75 43 85 74 + support@scores-decisions.com + http://www.scores-decisions.com/ + Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises + + Pensez à l'environnement avant d'imprimer ce message ! + Save paper - think before you print"; + + @sendMail('production@scores-decisions.com', $mailTo.',suivi@scores-decisions.com', "$txtPrestaton Annonces S&D", $messageInfo, '', $tabAttached); + } + + /** Copie des fichiers pour les applications tierses (Extranet, BO...) + **/ + @copy($repProduction.$ficProduction, '/home/data/clients/oldcrm/'.$ficProduction); + if ($tabAdherent['formatEnvois']=='csv') + @copy($repProduction.$ficProduction_csv, '/home/data/clients/oldcrm/'.$ficProduction_csv); + if ($tabAdherent['formatEnvois']=='specifique') + @copy($repProduction.$ficProduction_bil, '/home/data/clients/oldcrm/'.$ficProduction_bil); + + /** Si FTP, déplacement dans les dossiers adéquats + **/ + if ($tabAdherent['supportPrestation']=='ftp' || $tabAdherent['supportPrestation']=='web') {//$repProduction.$ficProduction + $repFtpClient=FTPCLIENT_PATH.strtolower($tabAdherent['nomClient']); + if (!file_exists($repFtpClient) || !file_exists($repFtpClient.'/recv')) { + echo date ('Y/m/d - H:i:s')." - ATTENTION : Les dossiers FTP du client ne sont pas correctement créés !".EOL; + if (!file_exists($repFtpClient) && mkdir($repFtpClient)) + echo date ('Y/m/d - H:i:s')." - Le dossier FTP du client a été créé ($repFtpClient)".EOL; + if (!file_exists($repFtpClient.'/recv') && mkdir($repFtpClient.'/recv')) + echo date ('Y/m/d - H:i:s')." - Le dossier FTP/RECV du client a été créé ($repFtpClient/recv)".EOL; + } + if (!move($repProduction.$ficProduction, $repFtpClient.'/recv/'.$ficProduction)) + echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $ficProduction dans FTP/RECV impossible !".EOL; + else + echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction a été déplacé dans FTP/RECV...".EOL; + + if ($tabAdherent['formatEnvois']=='csv') { + if (!move($repProduction.$ficProduction_csv, $repFtpClient.'/recv/'.$ficProduction_csv)) + echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $ficProduction_csv dans FTP/RECV impossible !".EOL; + else + echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction_csv a été déplacé dans FTP/RECV...".EOL; + } elseif ($tabAdherent['formatEnvois']=='specifique') { + if (!move($repProduction.$ficProduction_bil, $repFtpClient.'/recv/'.$ficProduction_bil)) { + if (!move(REP_TEMP.$ficProduction_bil, $repFtpClient.'/recv/'.$ficProduction_bil)) + echo date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $ficProduction_bil dans FTP/RECV impossible !".EOL; + else + echo date ('Y/m/d - H:i:s')." - Le fichier $ficProduction_bil a été déplacé dans FTP/RECV...".EOL; + } + } + } + + if ($mailSuivi) { + $strAnnRubs=''; + foreach ($tabRubFic as $libRub=>$nbAnnRub) + $strAnnRubs.=" - $nbAnnRub annonce(s) de la rubrique '$libRub'\r\n"; + $txtPrestaton=ucfirst(str_replace('Bodacc','', $typePrestaton)); + if ($collecte) $txtCol='Oui'; else $txtCol='Non'; + $txtMsgPresta="Le fichier d'annonces légales en provenance de Scores & Décisions a été généré pour $nomClient ($numPrestation). +Il contient $nbAnnonces annonce(s) dont (*) : +$strAnnRubs + +Informations complémentaires : +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Lignes ................... $nbLignes + Annonces Bodacc .......... Oui + Annonces Collecte JAL..... $txtCol + Horodatage ............... $dateFinFichier + Précédente exécution ..... ".$tabAdherent['dateDerniereExec']." + Fréquence ................ ".$tabAdherent['freqEnvois']." + Incrément ................ $clientNumTourFichier + Compression .............. $optionZip + +(*) : une même annonce pouvant être ventillée dans plusieurs chapitres, il est possible que la somme des rubriques dépasse le nombre d'annonces du fichier +";/*@todo Nombre d'annonces et ventilation par chapitre !*/ + @sendMail('production@scores-decisions.com', $mailSuivi.',suivi@scores-decisions.com', "$txtPrestaton Annonces S&D en télétransmission", $txtMsgPresta); + } + +} + +$strMessage.=date ('Y/m/d - H:i:s')." - Fin du traitement diffusion BODACC.\n"; +sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Surveillance Annonces par fichier '$typePrestaton'", $strMessage); + +echo date ('Y/m/d - H:i:s')." - Fin du traitement diffusion BODACC.\n"; +die(); + +function genereLigne200($siren, $nic) { + global $iInsee, $a, $iDb2, $iRnvp; + $a=$iInsee->getIdentiteEntreprise($siren,$nic); + $b=$iInsee->getInfosNotice($siren,$nic); + $c=$iInsee->getAdresse($siren,$nic); + + $tmp=$iDb2->select('jo.etablissements_act', 'bilType, bilAnnee, bilTca, bilFL', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC, false); + if (count($tmp)>0) { + $tcaSED=$tmp[0]['bilTca']; + $tcaSEDtype=$tmp[0]['bilType']; + $tcaSEDannee=$tmp[0]['bilAnnee']; + $tcaSEDmt=$tmp[0]['bilFL']; + } else { + $tcaSED=' '; + $tcaSEDtype='I'; + $tcaSEDannee='0000'; + $tcaSEDmt=0; + } + + // Forcage pour idclient=3 nimes metropole !!! +// if ($idClient==3 && $tcaSED<>' ') $a['TrancheCA']=$tcaSED; + + $tabRnvp=$iRnvp->getAdresseRnvpSource(2, $a['SourceId']); + $codeRnvp=$tabRnvp['CQAdrRnvp']*1; + if ($codeRnvp>0) { + $L1rnvp=strtr($tabRnvp['L1rnvp'],'/*',' '); + $L2rnvp=$tabRnvp['L2rnvp']; + $L3rnvp=$tabRnvp['L3rnvp']; + $L4rnvp=$tabRnvp['L4rnvp']; + $L5rnvp=$tabRnvp['L5rnvp']; + $L6rnvp=$tabRnvp['L6rnvp']; + $L7rnvp=$tabRnvp['L7rnvp']; + } else { + $L1rnvp=strtr($c['L1_NOM'],'/*',' '); + $L2rnvp=$c['L2_NOM2']; + $L3rnvp=$c['L3_ADRCOMP']; + $L4rnvp=$c['L4_VOIE']; + $L5rnvp=$c['L5_DISTSP']; + $L6rnvp=$c['L6_POST']; + $L7rnvp=$c['L7_PAYS']; + } + + // Forcage pour idclient=3 nimes metropole !!! + //if ($idClient==3 && $tcaSED<>' ') $a['TrancheCA']=$tcaSED; + $str= initstr(200, 3) . // Obligatoire CODE_ENTETE Ligne de description structurée de l'identité + initstr($a['SourceId'], 10 , '0', ALIGN_RIGHT) . // Obligatoire ID Numéro unique d'identification interne d'un établissement S&D + initstr($a['Siren'], 9 , '0', ALIGN_RIGHT) . // Obligatoire SIREN Siren de l'entreprise + initstr($a['Nic'], 5 , '0', ALIGN_RIGHT) . // Obligatoire NIC Nic de l'établissement + initstr($a['Source'], 3 , '0', ALIGN_RIGHT) . // Obligatoire SOURCE Source de la fiche d'identité + initstr($iInsee->valideSiren($siren,$nic), 1 , '0', ALIGN_RIGHT) . // Obligatoire SIRETVALIDE Siren/siret valide + initstr($a['numRC'], 10 ) . // Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés + initstr($a['Tribunal'], 6 ) . // Facultatif TRIBUNAL Identifiant du Tribunal + initstr(str_replace('-','',$a['dateMajIdentite']), 8 , '0', ALIGN_RIGHT) . // Obligatoire DATEMAJ Date de la dernière mise à jour dans la base S&D + initstr($a['Actif'], 1 , '0', ALIGN_RIGHT) . // Obligatoire ACTIF Établissement juridiquement actif + initstr($a['ActifEco'], 1 , '0', ALIGN_RIGHT) . // Obligatoire ACTIFECO Établissement économiquement actif + initstr($a['SituationJuridique'], 2 ) . // Obligatoire SITJUR Situation Juridique de l'entreprise + initstr('', 3 ) . // Facultatif EVE Dernier événement Insee recensé + initstr(str_replace('-','',$a['DateMajINSEE']), 8 , '0', ALIGN_RIGHT) . // Facultatif DATEVE Date du dernier événement Insee recensé + initstr('', 2 ) . // Facultatif TYPETAB Type d'établissement concerné par l'événement + initstr($a['Siege'], 1 , '0', ALIGN_RIGHT) . // Obligatoire SIEGE Établissement siège, secondaire ou principal + initstr($a['Nom'], 160 ) . // Obligatoire NOM Raison Sociale + initstr($a['NomCommercial'], 160 ) . // Facultatif NOMCOM Nom commercial + initstr($a['Enseigne'], 80 ) . // Facultatif ENSEIGNE Enseigne de l'établissement + initstr($a['Sigle'], 40 ) . // Facultatif SIGLE sigle de l'entreprise + initstr($a['AdresseNum'], 4 , '0', ALIGN_RIGHT) . // Facultatif ADR_NUMVOIE Numéro dans la voie + initstr($a['AdresseBtq'], 1 ) . // Facultatif ADR_BTQ Indicateur de répétition (Bis, Ter, etc...) + initstr($a['AdresseVoie'], 4 ) . // Facultatif ADR_TYPVOIE Type de voie + initstr($a['AdresseRue'], 32 ) . // Obligatoire ADR_LIBVOIE Libellé de la voie + initstr($a['Ville'], 32 ) . // Obligatoire ADR_LIBCOM Commune + initstr($a['CP'], 5 , '0', ALIGN_RIGHT) . // Obligatoire ADR_CP Code postal + initstr($a['Adresse2'], 38 ) . // Facultatif ADR_COMP Complément d'adresse + initstr('', 38 ) . // Facultatif ADR_DISTSP Distribution spéciale + initstr($a['Pays'], 38 ) . // Facultatif PAYS Pays + initstr($a['PaysIso2'], 2 ) . // Facultatif PAYSISO2 Code Pays au format ISO2 + initstr($a['Dept'], 2 ) . // Obligatoire ADR_DEP Département de l'établissement + initstr($a['codeCommune'], 3 , '0', ALIGN_RIGHT) . // Obligatoire ADR_COM Code commune de l'établissement + initstr(str_replace(' ','',$a['Rivoli']), 5 ) . // Facultatif CODEVOIE Code voie de l'établissement + initstr($a['codIris'], 4 ) . // Facultatif CODEIRIS Code Iris de l'établissement + initstr('', 5 ) . // Facultatif CODEILOT Code Ilot de l'établissement + initstr($a['AdresseDom'], 1 , '0', ALIGN_RIGHT) . // Facultatif ADRESSEDOM Indicateur d'adresse de domiciliation + initstr($a['Tel'], 15 ) . // Facultatif TEL Numéro de téléphone + initstr($a['Fax'], 15 ) . // Facultatif FAX Numéro de télécopie + initstr($a['Web'], 80 ) . // Facultatif WEB Site Web + initstr($a['Mail'], 80 ) . // Facultatif MAIL Adresse Email de contact générique + initstr($a['Auxiliaire'], 1 , '0', ALIGN_RIGHT) . // Facultatif AUXILT Auxiliarité de l'activité de l'établissement + initstr($a['Saisonnalite'], 1 , '0', ALIGN_RIGHT) . // Facultatif SAISONAT Saisonnalité de l'établissement + initstr($a['NatureActivite'], 2 , '0', ALIGN_RIGHT) . // Facultatif ACTIVNAT Nature de l'activité de l'établissement + initstr($a['OrigineCreation'], 2 ) . // Facultatif ORIGINE Origine de la création de l'établissement + initstr($a['TypeExploitation'], 2 , '0', ALIGN_RIGHT) . // Facultatif TYPEXPLOIT Type d'exploitation + initstr($a['LIEUACT'], 2 , '0', ALIGN_RIGHT) . // Facultatif LIEUACT Lieu de l'activité de l'établissement + initstr($a['ACTISURF'], 2 , '0', ALIGN_RIGHT) . // Facultatif ACTISURF Type de magasin + initstr($a['PRODPART'], 1 , '0', ALIGN_RIGHT) . // Facultatif PRODPART Participation particulière à la production de l'établissement + initstr($b['insARRONET'], 2 , '0', ALIGN_RIGHT) . // Facultatif ARRONET Arrondissement de l'établissement + initstr($b['insCTONET'], 3 , '0', ALIGN_RIGHT) . // Facultatif CTONET Canton + initstr($b['insTCD'], 2 , '0', ALIGN_RIGHT) . // Facultatif TCD Tranche de commune détaillée + initstr($b['insZEMET'], 2 , '0', ALIGN_RIGHT) . // Facultatif ZEMET Zone d'emploi + initstr($b['insDU'], 2 ) . // Facultatif DU Département de l'unité urbaine de localisation + initstr($b['insTU'], 1 ) . // Facultatif TU Taille de l'unité urbaine + initstr($b['insUU'], 2 ) . // Facultatif UU Numéro de l'untié urbaine + initstr(str_replace('-','',$a['DateCreaEt']), 8 , '0', ALIGN_RIGHT) . // Facultatif DCRET Date de création de l'établissement + initstr($a['NafEtab'], 5 ) . // Obligatoire APE_ETAB Code activité dans la NAF rév2 de l'établissement + initstr($a['NaceEtab'], 5 ) . // Facultatif NACE_ETAB Code activité NACE de l'établissement + + initstr(0, 4 , '0', ALIGN_RIGHT) . // Facultatif DAPET Année de validité de l'activité principale de l'établissement + + initstr($a['EffectifEtab'], 7 , '0', ALIGN_RIGHT) . // Facultatif EFF_ET Effectif de l'établissement + initstr($a['EffEtTr'], 2 ) . // Facultatif TEFF_ET Tranche d'effectif de l'établissement + initstr($a['AnneeEffEt'], 4 , '0', ALIGN_RIGHT) . // Facultatif DEFET Année de mise à jour de l'effectif établissement + + initstr('', 1 ) . // Facultatif MODET Modalité de l'activité pricipale de l'établissement + + initstr($a['EXPLET'], 1 ) . // Facultatif EXPLET Etablissement exploitant tout ou partie des moyens de production + initstr($b['insRPET'], 2 , '0', ALIGN_RIGHT) . // Facultatif RPET Région de localisation de l'établissement + + initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . // Facultatif DREACTET Date de réactivation de l'établissement + initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . // Facultatif DATEFERET Date de fermeture de l'établissement + + initstr($b['insEAEANT'], 4 , '0', ALIGN_RIGHT) . // Facultatif EAEANT Année de validité des rubriques de niveau Etab provenant des EAE* + initstr($b['insEAEAPET'], 5 ) . // Facultatif EAEAPET Activité principale de l'établissement issue des EAE + initstr($b['insEAESEC1T'], 5 ) . // Facultatif EAESEC1T Activité secondaire de l'établissement issue des EAE + initstr($b['insEAESEC2T'], 5 ) . // Facultatif EAESEC2T Autre activité secondaire de l'établissement issue des EAE + initstr(str_replace('-','',$a['DateCreaEn']), 8 , '0', ALIGN_RIGHT) . // Facultatif DCREN Date de création de l'entreprise + initstr($a['NafEnt'], 5 ) . // Obligatoire APE_ENT Code activité dans la NAF rév2 de l'entreprise + initstr($a['NaceEnt'], 5 ) . // Facultatif NACE_ENT Code activité NACE de l'entreprise + + initstr(0, 4 , '0', ALIGN_RIGHT) . // Facultatif DAPEN Année de validité de l'activité principale de l'entreprise + + initstr($a['Effectif'], 7 , '0', ALIGN_RIGHT) . // Facultatif EFF_ENT Effectif de l'entreprise + initstr($a['EffEnTr'], 2 ) . // Facultatif TEFF_ENT Tranche d'effectif de l'entreprise + initstr($a['AnneeEffEn'], 4 , '0', ALIGN_RIGHT) . // Facultatif DEFEN Année de mise à jour de l'effectif entreprise + initstr($a['MODEN'], 1 ) . // Facultatif MODEN Modalité de l'activité pricipale de l'entreprise + initstr($a['EXPLEN'], 1 ) . // Facultatif EXPLEN Entreprise exploitant tout ou partie des moyens de production + initstr($b['insRPEN'], 2 , '0', ALIGN_RIGHT) . // Facultatif RPEN Région de localisation du siège de l'entreprise + + initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . // Facultatif DREACTEN Date de réactivation de l'entreprise + initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . // Facultatif DATEFEREN Date de fermeture de l'entreprise + + initstr(str_replace('-','',$a['dateImmat']), 8 , '0', ALIGN_RIGHT) . // Facultatif DATEIMMAT Date d'immatriculation de l'entreprise au RCS + initstr(str_replace('-','',$a['dateRad']), 8 , '0', ALIGN_RIGHT) . // Facultatif DATERAD Date de radiation de l'entreprise du RCS + initstr($a['Capital'], 15 , '0', ALIGN_RIGHT) . // Facultatif CAPITAL Montant du capital de l'entreprise + initstr($a['CapitalType'], 1 ) . // Facultatif CAPITALTYPE Type de capital + initstr($a['CapitalDev'], 3 ) . // Facultatif CAPITALDEV Devise du capital + initstr($a['FJ'], 4 , '0', ALIGN_RIGHT) . // Obligatoire CJ Catégorie Juridique de l'entreprise + initstr($a['Civilite'], 1 , '0', ALIGN_RIGHT) . // Facultatif CIVILITE Civilité de l'entreprise si Personne Physique + initstr($a['NbEtab'], 4 , '0', ALIGN_RIGHT) . // Facultatif NBETAB Nombre d'établissements actifs de l'entreprise + initstr($a['TrancheCA'], 1 , '0', ALIGN_RIGHT) . // Facultatif TCA Tranche de chiffre d'affaire + initstr($a['TrancheCAexp'], 1 , '0', ALIGN_RIGHT) . // Facultatif TCAEXP Tranche de chiffre d'affaire à l'export + initstr($a['APRM'], 6 ) . // Facultatif APRM Activité principale au registre des métiers + initstr($a['MONOREG'], 1 , '0', ALIGN_RIGHT) . // Facultatif MONOREG Mono-régionalité de l'entreprise + initstr($a['REGIMP'], 2 , '0', ALIGN_RIGHT) . // Facultatif REGIMP Principale région d'implantation de l'entreprise + initstr($a['MONOACT'], 1 , '0', ALIGN_RIGHT) . // Facultatif MONOACT Mono-activité de l'entreprise + initstr(substr($a['SiretSiege'],-5), 5 , '0', ALIGN_RIGHT) . // Facultatif NICSIEGE Nic de l'établissement siège + initstr($a['RECME'], 1 , '0', ALIGN_RIGHT) . // Facultatif RECME Répertoire des Entreprises Contrôlées Majoritairement par l'État + + initstr(0, 14 , '0', ALIGN_RIGHT) . // Facultatif SIRETLIE Siret lié : prédécesseur, successeur, doublon, autre + initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif SIRETLIETYPE Type de sitet lié + initstr($a['AutreSiret']['pre']['nic'], 5 , '0', ALIGN_RIGHT) . // Facultatif NICPREC Nic de l'établissement prédécesseur (dans le cadre d'un transfert) + initstr($a['AutreSiret']['suc']['nic'], 5 , '0', ALIGN_RIGHT) . // Facultatif NICSUIV Nic de l'établissement successeur (dans le cadre d'un transfert) + initstr('', 2 ) . // Facultatif insDESTINAT Destination Insee + initstr($b['insDEPCOMEN'], 5 , '0', ALIGN_RIGHT) . // Facultatif insDEPCOMEN Code commune Insee du siège de l'entreprise + /*initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMNICSIEGE Indicateur de MAJ du NIC SIEGE + initstr(0 1 , '0', ALIGN_RIGHT) . // Facultatif insMNOMEN Indicateur de MAJ de la Raison Sociale + initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMCJ Indicateur de MAJ de la Forme Juridique + initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMAPEN Indicateur de MAJ du NAF entreprise + initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMENSEIGNE Indicateur de MAJ de l'ENSEIGNE + initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMAPET Indicateur de MAJ du NAF établissement + initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMADRESSE Indicateur de MAJ de l'ADRESSE de l'établissement + initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMAUXILT Indicateur de MAJ de l'AUXILIARITE + initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMSIGLE Indicateur de MAJ du SIGLE + initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMEXPLEN Indicateur de MAJ du caractère EXPLOITANT entrep + initstr(0, 1 , '0', ALIGN_RIGHT) . // Facultatif insMEXPLET Indicateur de MAJ du caractère EXPLOITANT étab + */ + '00000000000'. + initstr($codeRnvp, 1 , '0', ALIGN_RIGHT) . // Facultatif ADR_RNVP Type de Prestation RNVP si RNVP + initstr($L1rnvp, 38 ) . // Facultatif L1_nomen Ligne 1 : Nom de l'entreprise + initstr($L2rnvp, 38 ) . // Facultatif L2_COMP Ligne 2 : Complément de nom + initstr($L3rnvp, 38 ) . // Facultatif L3_CADR Ligne 3 : Complément d'adresse + initstr($L4rnvp, 38 ) . // Facultatif L4_VOIE Ligne 4 : Adresse + initstr($L5rnvp, 38 ) . // Facultatif L5_DISP Ligne 5 : Distribution spéciale + initstr($L6rnvp, 38 ) . // Facultatif L6_POST Ligne 6 : Code Postal, commune, etc.. + initstr($L7rnvp, 38 ) . + initstr($b['insEAEANN'], 4 , '0', ALIGN_RIGHT) . // Facultatif EAEANN Année de validité des rubriques de niveau ENTREP provenant des EAE* + initstr($b['insEAEAPEN'], 5 ) . // Facultatif EAEAPEN Activité principale de l'entreprise issue des EAE + initstr($b['insEAESEC1N'], 5 ) . // Facultatif inseaesec1n Activité secondaire n°1 de l'entreprise issue des EAE + initstr($b['insEAESEC2N'], 5 ) . // Facultatif inseaesec2n Activité secondaire n°2 de l'entreprise issue des EAE + initstr($b['insEAESEC3N'], 5 ) . // Facultatif inseaesec3n Activité secondaire n°3 de l'entreprise issue des EAE + initstr($b['insEAESEC4N'], 5 ) . // Facultatif inseaesec4n Activité secondaire n°4 de l'entreprise issue des EAE + initstr($a['GeoLat'], 12 , ' ', ALIGN_RIGHT) . // Facultatif GPSX Latitude en ° et décimales de ° (format WGS1984) + initstr($a['GeoLon'], 12 , ' ', ALIGN_RIGHT) . // Facultatif GPSY Longitude en ° et décimales de ° (format WGS1984) + initstr($a['GeoPrecis'], 1 , '0', ALIGN_RIGHT) . // Facultatif GPSP Niveau de précision du géocodage + initstr($a['GeoInfos']['NZUS'], 10 ) . // Facultatif ZUS Identifiant de la Zone Urbaine Sensible + initstr($a['GeoInfos']['NZRU'], 10 ) . // Facultatif ZRU Identifiant de la Zone de Rénovation Urbaine + initstr($a['GeoInfos']['NZFU'], 10 ) . // Facultatif ZFU Identifiant de la Zone Franche Urbaine + initstr($a['GeoInfos']['NCUCS'], 10 ) . // Facultatif CUCS Identifiant de la Zone Contrat Urbain de Cohésion Social + initstr($a['GeoInfos']['NAFR'], 10 ) . // Facultatif AFR Identifiant de la Zone AFR + initstr($a['GeoInfos']['NZRR'], 10 ) . // Facultatif ZRR Identifiant de la ZRR + initstr($a['TvaNumero'], 15 ) . // Facultatif TVA Numéro de TVA Intracommunataire + initstr($a['TvaAttribue'], 1 , '0', ALIGN_RIGHT) . // Facultatif TVAVALIDE Numéro de TVA validé + initstr($a['AncienSiege'], 1 , '0', ALIGN_RIGHT) . // Facultatif ANCIENSIEGE Ancien siège + initstr($a['Isin'], 12 ) . // Facultatif CODEISIN Code ISIN de l'entreprise si cotation en bourse + initstr($a['dir1Nom'], 40 ) . // Facultatif PPDIR1NOM Nom du principal dirigeant + initstr($a['dir1Prenom'], 30 ) . // Facultatif PPDIR1PRENOM Prénom du principal dirigeant + initstr($a['dir1NomUsage'], 40 ) . // Facultatif PPDIR1NNAISS Nom de naissance du ppl dirigeant + initstr(str_replace('-','',$a['dir1DateNaiss']), 8 , '0', ALIGN_RIGHT).// Facultatif PPDIR1DNAISS Date de naissance + initstr($a['dir1LieuNaiss'], 35 ) . // Facultatif PPDIR1LNAISS Lieu de Naissance + initstr($a['dir1Code'], 4 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1FONC Code Fonction + initstr(str_replace('-','',$a['dir1DateFct']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1MAJ Date de MAJ du ppl dirigeant + initstr($a['dir2Nom'], 40 ) . // Facultatif PPDIR2NOM Nom du seconde principal dirigeant + initstr($a['dir2Prenom'], 30 ) . // Facultatif PPDIR2PRENOM Prénom du 2ème principal dirigeant + initstr($a['dir2NomUsage'], 40 ) . // Facultatif PPDIR2NNAISS Nom de naissance du 2ème ppl dirigeant + initstr(str_replace('-','',$a['dir2DateNaiss']), 8 , '0', ALIGN_RIGHT).// Facultatif PPDIR2DNAISS Date de naissance du 2ème ppl dirigeant + initstr($a['dir2LieuNaiss'], 35 ) . // Facultatif PPDIR2LNAISS Lieu de Naissance du 2ème ppl dirigeant + initstr($a['dir2Code'], 4 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2FONC Code Fonction du 2ème ppl dirigeant + initstr(str_replace('-','',$a['dir2DateFct']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2MAJ Date de MAJ du 2ème ppl dirigeant + initstr(str_replace('-','',$a['bilanDate']), 8 , '0', ALIGN_RIGHT) . // Facultatif BILANCLOT Date de dernière clôture de bilan disponible + initstr($a['bilanMois'], 2 , '0', ALIGN_RIGHT) . // Facultatif BILANDUREE Durée du dernier exercice disponible + initstr($a['bilanFL'], 15 , '0', ALIGN_RIGHT) . // Facultatif BILANCA Chiffre d'affaires au dernier bilan disponible + initstr($a['bilanHN'], 15 , '0', ALIGN_RIGHT) . // Facultatif BILANRES Résultat au dernier bilan disponible + initstr($tcaSED, 1 ) . // Tranche de CA SED + initstr($tcaSEDtype, 1 ) . // Type de tranche de CA : (R)éel, (I)nconnu ou (E)stimé + initstr($tcaSEDannee, 4 ) . // Année du CA + initstr($a['dir1Genre'], 1 ) . // PPDIR1 Genre + initstr($a['dir2Genre'], 1 ) . // PPDIR2 Genre + initstr(' ', 33 ) ; // Facultatif FILLER1 Zone libre + + return $str; +} + +function genereLignes400($siren, &$nbLignes=0, $optionEOL) { + global $iInsee, $a, $nbLignes; + $mBil=new MBilans($siren); + $tabBilans=@$mBil->listeBilans(); + $derBilan=current($tabBilans); + $p=@$mBil->getBilan(WDate::dateT('Ymd','d/m/Y',$derBilan['dateExercice']), $derBilan['typeBilan']); + //print_r($p); + if ($p['CONSOLIDE']=='S') $numLiasse='2033'; + else $numLiasse='2050'; + $unite=strtoupper($p['MONNAIE_LIV_UNITE']); + if ($unite=='') $unite='U'; + $strIni=initstr(400, 3) . // Obligatoire CODE_ENTETE Ligne de description structurée de l'identité + initstr($a['SourceId'], 10 , '0', ALIGN_RIGHT) . // Obligatoire ID Numéro unique d'identification interne d'un établissement S&D + initstr($a['Siren'], 9 , '0', ALIGN_RIGHT) . // Obligatoire SIREN Siren de l'entreprise + initstr($a['Nic'], 5 , '0', ALIGN_RIGHT) . // Obligatoire NIC Nic de l'établissement + initstr($a['Source'], 3 , '0', ALIGN_RIGHT) . // Obligatoire SOURCE Source de la fiche d'identité + initstr($iInsee->valideSiren($siren,$nic), 1 , '0', ALIGN_RIGHT) . // Obligatoire SIRETVALIDE Siren/siret valide + initstr($a['numRC'], 10 ) . // Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés + initstr($a['Tribunal'], 6 ) . // Facultatif TRIBUNAL Identifiant du Tribunal + initstr(str_replace('-','',$p['DATE_FRAICHE_BILAN']), 8, '0', ALIGN_RIGHT) . // DATEMAJ Date de la dernière mise à jour du bilan dans la base S&D Format AAAAMMJJ + initstr(substr($p['DATE_FRAICHE_BILAN'],0,4), 4, '0', ALIGN_RIGHT) . // MILLESIME Année du bilan + initstr(str_replace('-','',$p['DATE_CLOTURE']), 8, '0', ALIGN_RIGHT) . // BILAN_DATE Date de clôture du bilan Format AAAAMMJJ + initstr($p['DUREE_MOIS'], 2, '0', ALIGN_RIGHT) . // BILAN_DUREE Durée de l'exercice en mois + initstr(str_replace('-','',$p['DATE_CLOTURE_PRE']), 8, '0', ALIGN_RIGHT) . // BILAN_DATEP Date de clôture du bilan précédent Format AAAAMMJJ + initstr($p['DUREE_MOIS_PRE'], 2, '0', ALIGN_RIGHT) . // BILAN_DUREEP Durée de l'exercice précédent en mois + initstr($numLiasse,4) . // BILAN_LIASSE Numéro de la première liasse du bilan 2033,2050 + initstr($p['CONSOLIDE'], 1) . // BILAN_TYPE Type de bilan S=Réel Normal Simplifié, C=Consolidé, N=Réel Normal + initstr($p['MONNAIE'], 3) . // BILAN_MONNAIE Code devise de livraison selon la norme ISO 4217 (3 lettres) + initstr($p['MONNAIE_ORI'], 3) . // BILAN_MONNAIEO Code devise d'origine du bilan selon la norme ISO 4217* + initstr($unite, 1); // BILAN_UNITE Unité du bilan livré U=en unité de devise, K=en milliers, M=en millions + unset($p['SIREN']); + unset($p['SOURCE']); + unset($p['devise']); + unset($p['DATE_FRAICHE_BILAN']); + unset($p['DATE_CLOTURE']); + unset($p['DATE_CLOTURE_PRE']); + unset($p['DUREE_MOIS']); + unset($p['DUREE_MOIS_PRE']); + unset($p['MONNAIE']); + unset($p['CONSOLIDE']); + unset($p['MONNAIE_ORI']); + unset($p['MONNAIE_LIV_UNITE']); + if (count($p)==0) return ''; + $strIni.=initstr(count($p), 4, '0', ALIGN_RIGHT); // BILAN_NBPOSTES Nombre de postes livrés + $nbP=0;$strP=$strRet=''; + foreach ($p as $code=>$valeur) { + $nbP++; + if ($valeur>=0) $signe='+'; + else $signe='-'; + $strP.= initstr($code, 4).$signe.initstr(abs($valeur), 20, '0', ALIGN_RIGHT); + if($nbP<76) continue; + $strRet.=initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$optionEOL; + $nbLignes++; + $nbP=0;$strP=''; + } + if($nbP<76) { + // Ecriture de la dernière ligne sauf s'il y a dejà 76 postes + $strRet.=initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$optionEOL; + $nbLignes++; + } + return $strRet; +} + ?> \ No newline at end of file diff --git a/bin/diffusionCegedim.php b/bin/diffusionCegedim.php new file mode 100644 index 00000000..7953e3bd --- /dev/null +++ b/bin/diffusionCegedim.php @@ -0,0 +1,99 @@ +#!/usr/bin/php +1) +{ + for ($i=1; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (strtolower(substr($argv[$i],1,1))) { + case 'v': $modeDebug=true; break; + case '-': + case '?': die($strInfoScript); break; + default: die('Option '. $argv[$i] . " inconnue !\n"); break; + } + } else $tabFichier[]=$argv[$i]; + } +} + +// Si pas de date de début alors on prend le 1er jour du mois précédent +$mailTo='yves.lauliac@cegedim.fr,didier.pelet@cegedim.fr,chantal.labbe@cegedim.fr,isabelle.huge@cegedim.fr,suivi@scores-decisions.com,ylenaour@scores-decisions.com'; +//$mailTo='ylenaour@scores-decisions.com'; +$nomFichier=REP_TEMP.'radiationCegedimSetD_'.substr($dateDebut,0,7).'.csv'; + +echo date('Y/m/d - H:i:s') ." - Début de la production du fichier Cegedim pour la période $dateDebut à $dateFin.".EOL; + +$nbRows=$iDb->select('bodacc_detail', + "siren, nic, LPAD(IF(codePostal=0, codePostalSiege,codePostal),5,'0') as codePostal", + "id>=18000000 AND Bodacc_Date_Parution BETWEEN '$dateDebut' AND '$dateFin' AND Rubrique='radiations'", false, MYSQL_ASSOC, true); +echo date('Y/m/d - H:i:s') ." - Il y a $nbRows radiations Cegedim...".EOL; +$nbLignes=0; +$fp=fopen($nomFichier,'w'); +fwrite($fp, "siren;nic;cp".EOL); +while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) { + $siren=$tabTmp['siren']; + $nic=$tabTmp['nic']; + $cp=$tabTmp['codePostal']; + fwrite($fp, "$siren;$nic;$cp".EOL); + $nbLignes++; +} +fclose($fp); + +echo date('Y/m/d - H:i:s') ." - Fin de la production du fichier Cegedim ($nbLignes lignes/$nbRows).".EOL; + +$tabAttached=array($nomFichier); +$nomFichierBase=basename($nomFichier); + +$messageInfo="Bonjour, + +Veuillez trouver ci-joint le fichier Scores & Décisions relatif à votre prestation contractuelle. +Le fichier se nomme $nomFichierBase et contient $nbLignes lignes. + +Bien Cordialement, +Le service Support. + +-- + +SCORES & DECISIONS +Service support +1, rue de Clairefontaine - 78120 RAMBOUILLET +tél : 33 (0)1 75 43 80 10 +fax : 33 (0)1 75 43 85 74 +support@scores-decisions.com +http://www.scores-decisions.com/ +Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises + +Pensez à l'environnement avant d'imprimer ce message ! +Save paper - think before you print"; + +@sendMail('production@scores-decisions.com', $mailTo, "Prestation Cegedim Radiation", $messageInfo, '', $tabAttached); + +die(); + + ?> \ No newline at end of file diff --git a/bin/diffusionEntrep.php b/bin/diffusionEntrep.php new file mode 100644 index 00000000..93d77d13 --- /dev/null +++ b/bin/diffusionEntrep.php @@ -0,0 +1,362 @@ +#!/usr/bin/php +"'",'&'=>'&', '²'=>'²', "\r"=>'', "\n"=>'', "\t"=>'')); + + if ($sep=='') return sprintf("%-".$lon.'.'.$lon."s", $txt); + + return trim(sprintf("%-".$lon.'.'.$lon."s", $txt)).$sep; +} + +function choixAdr($bodEtab, $bodSiege, $insee) { + + if (strlen(trim($bodSiege))>0) $adr=trim($bodSiege); + elseif (strlen(trim($bodEtab))>0) $adr=trim($bodEtab); + else $adr=''; + + if (isset($insee) && trim($insee)<>'') return $insee; + else return $adr; +} + + +include_once(FWK_PATH.'common/chiffres.php'); +include_once(FWK_PATH.'common/dates.php'); +include_once(INCLUDE_PATH.'partenaires/classMBilans.php'); +include_once(INCLUDE_PATH.'insee/classMInsee.php'); +include_once(INCLUDE_PATH.'partenaires/classMGreffes.php'); +include_once(INCLUDE_PATH.'partenaires/classMLiens.php'); +include_once(INCLUDE_PATH.'scores/classMFinancier.php'); +include_once(INCLUDE_PATH.'scores/classMScores.php'); +include_once(FWK_PATH.'mail/sendMail.php'); + +$siretReprise=0; + +$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] +Mise à jour des champs complexes de la table 'etablissement_act' et génération du fichier spécifique Véolia. + +Options : + -r:SIRET Reprendre après ce siret + -v Verbosité maximum +"; + +$argv=$_SERVER['argv']; +if ($_SERVER['argc']>1) +{ + for ($i=1; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (substr($argv[$i],1,1)) { + case 'r': + $siretReprise=substr($argv[$i],3,strlen($argv[$i])-3); + break; + case '-': + case '?': + die($strInfoScript); + break; + default: + die('Option '. $argv[$i] . " inconnue !\n"); + break; + } + } + } +} + +$iDb=new WDB('jo'); +$iDb2=new WDB('jo'); +$iInsee=new MInsee(); + +/** Chargement des depCom des communes ayant au moins une adresse de domiciliation **/ +$tabComDom=array(); +$nbRows=$iDb->select('tabAdrDom', 'depComEt', '(enActif=1 OR etActif=1) AND nbEntrep>30 AND pasEntrepDom=0 AND siren>1000 GROUP BY depComEt', false, MYSQL_ASSOC, true); +echo date ('Y/m/d - H:i:s')." - Il y a $nbRows communes avec des adresses de domiciliation...".EOL; +while($tabCom=$iDb->fetch(MYSQL_ASSOC)) + $tabComDom['_'.$tabCom['depComEt']]=1; + +$iBilan=new MBilans(0); +$iCotation=new ICotation(array()); +$iLiens=new MLiens(0); + +echo date ('Y/m/d - H:i:s')." - Début du traitement diffusion des Etablissements.\n"; + +$fields='id, source, source_id, triCode, autre_id, siren, nic, siege, raisonSociale, enseigne, sigle, +adr_num, adr_btq, adr_typeVoie, adr_libVoie, adr_comp, adr_cp, adr_ville, adr_dep, adr_com, tel, fax, +cj, capital, capitalDev, capitalSrc, ape_etab, ape_entrep, age_entrep, age_etab, tca, tcaexp, +ape4_etab, ape4_entrep, dateCrea_etab, dateCrea_ent, dateImmat, teff_entrep, teff_etab, eff_entrep, eff_etab, distSP, achPost, +dirCiv, dirNom, dirPrenom, dirFct, nbEtab, nbActio, bilType, bilAnnee, bilCloture, bilDuree, bilTca, +bilEE, bilFL, bilFK, bilFR, bilGF, bilGP, bilGU, bilGW, bilHD, bilHH, bilHL, bilHM, bilHN, bilYP, +tvaIntraValide, tvaIntraCle'; + +//if (0) { +$nbRows=$iDb->select('etablissements_act_tmp', 'COUNT(*) AS nb', '1', false, MYSQL_ASSOC); +$nbRowsTot=$nbRows[0]['nb']; +echo date('Y/m/d - H:i:s') ." - Début de l'export des $nbRowsTot établissements actifs...".EOL; +$iLimitNb=100000; +$fp=fopen(CLIENTS_PATH.'veolia/veolia_'.date('Ymd').'.txt','w'); + +for ($iLimit=0; $iLimit<$nbRowsTot; $iLimit+=$iLimitNb) { +$nbRows=$iDb->select('etablissements_act_tmp', $fields, "1 LIMIT $iLimit, $iLimitNb", false, MYSQL_ASSOC, true); +if (mysql_errno()>0) die(date('Y/m/d - H:i:s') ." - Erreur SQL : ".mysql_error().EOL); + +echo date('Y/m/d - H:i:s') ." - Il y a $nbRows entreprises à diffuser ($iLimit, $iLimitNb)...".EOL; + +$numRow=$sirenPre=0; +$tabTva=array(); +$anneeEstime=date('Y')-2; +$clotureEstime=$anneeEstime.'-12-31'; +$clotureEstimeYmd=$anneeEstime.'1231'; + +$tabSirenVisites=array(); + +while($entrep=$iDb->fetch(MYSQL_ASSOC)) { + $numRow++; + $siren=$entrep['siren']; + $nic=$entrep['nic']; + $siret=$siren.$nic; + + // Ne prendre que les siren passés en paramètre ? + //if (!in_array($siret, $tabSiret)) continue; + + // Reprendre que à partir du siret... + if ($siret*1<$siretReprise) continue; + //if ($entrep['bilType']<>'R') continue; + + $strOutput =exporte("A", 1); + $strOutput.=$entrep['source'].exporte(sprintf("%010s", $entrep['source_id']), 10); + $strOutput.=exporte(sprintf("%09s", $entrep['siren']), 9); + $strOutput.=exporte(sprintf("%05s", $entrep['nic']), 5); + $strOutput.=exporte($entrep['enseigne'], 40); + $strOutput.=exporte($entrep['sigle'], 20); + $strOutput.=exporte($entrep['raisonSociale'], 32); + $strOutput.=exporte(substr($entrep['raisonSociale'],32), 32); + $strOutput.=exporte($entrep['distSP'], 32); // ENTREE BATIMENT RESIDENCE + + $adresse=$entrep['adr_num']*1; + if ($adresse==0) $adresse=''; + else $adresse.=' '; + $adresse.=trim(preg_replace('/ +/', ' ', $entrep['adr_btq'].' '.$entrep['adr_typeVoie'].' '.$entrep['adr_libVoie'])); + $strOutput.=exporte($adresse, 32); + $strOutput.=exporte($entrep['adr_comp'], 32); + $strOutput.=exporte(sprintf("%05s",$entrep['adr_cp']), 6); + $strOutput.=exporte($entrep['adr_ville'], 32); + $strOutput.=exporte($entrep['achPost'], 32); // CEDEX + + if (strtoupper(trim($entrep['adr_dep']))=='2A' || strtoupper(trim($entrep['adr_dep']))=='2B') + $depCom=trim($entrep['adr_dep']).sprintf("%03s",$entrep['adr_com']); + else + $depCom=sprintf("%02s",substr($entrep['adr_dep']*1,0,2)).sprintf("%03s",$entrep['adr_com']); + $strOutput.=exporte($depCom, 5); + + if (($entrep['source']*1)==2 && ($entrep['capitalSrc']*1)==2) + $strOutput.=exporte('I', 1); // Source INSEE + else + $strOutput.=exporte('S', 1); // Source Scores & Décisions + + if ($entrep['dirCiv']==0 || $entrep['dirCiv']=='') $civ=''; + elseif ($entrep['dirCiv']*1==1) $civ='M'; + elseif ($entrep['dirCiv']*1==2) $civ='MME'; + else $civ=$entrep['dirCiv']; + + $strOutput.=exporte($civ, 4); // Civilite + $strOutput.=exporte($entrep['dirNom'], 20); // NOM + $strOutput.=exporte($entrep['dirPrenom'], 30); // PRENOM + $strOutput.=exporte($entrep['dirFct'], 4); // Code Fct + $strOutput.=exporte(sprintf("%10s",preg_replace('/( |\-|\.)/', '', $entrep['tel'])), 10); + $strOutput.=exporte(sprintf("%10s",preg_replace('/( |\-|\.)/', '', $entrep['fax'])), 10); + $strOutput.=exporte($entrep['dateCrea_etab'], 8); + + $dateCreationEnt=$entrep['dateCrea_ent']; + /*if $dateCreationEnt=$entrep['dateCrea_ent']; + dateCrea_etab, dateCrea_ent, dateImmat + dateCrea_*/ + + if (($entrep['siege']*1)==1) $strOutput.=exporte('01', 2); + else $strOutput.=exporte('02', 2); + $strOutput.=exporte($entrep['nbEtab'], 5); + $strOutput.=exporte($entrep['cj'], 4); + $fJur=$entrep['cj']; + $strOutput.=exporte($entrep['capital'], 13); + if ($entrep['capitalDev']=='EUR' || $entrep['capitalDev']=='') + $strOutput.=exporte('Euro', 10); + else + $strOutput.=exporte($entrep['capitalDev'], 10); + + $tabNace=array(); + $naf5et=$entrep['ape_etab']; + $naf5en=$entrep['ape_entrep']; + $naf4et=$entrep['ape4_etab']; + $naf4en=$entrep['ape4_entrep']; + if ($naf4et=='' || $naf4et=='000Z') $tabNace['ape4_etab']=$naf4et=@$iCotation->tabNaf21[$naf5et]; + if ($naf4en=='' || $naf4en=='000Z') $tabNace['ape4_entrep']=$naf4en=@$iCotation->tabNaf21[$naf5en]; + $naf4etlib=@$iInsee->getLibelleNaf($naf4et); + if ($naf4etlib=='') $tabNaf4inconnu[]=$naf4et; + $strOutput.=exporte($naf4et, 4); // NAF4 + $strOutput.=exporte($naf4etlib, 90); + + $naf5etlib=@$iInsee->getLibelleNaf($naf5); + if ($naf5etlib=='') $tabNaf5inconnu[]=$naf5et; + $strOutput.=exporte($naf5et, 5); + $strOutput.=exporte($naf5etlib, 90); + + $tabNace['NaceEtab']=@$iInsee->getCodeNace($entrep['ape_etab']); + $tabNace['NaceEntrep']=@$iInsee->getCodeNace($entrep['ape_entrep']); + + if (@$tabComDom['_'.$depCom]==1) { + $tabDom=@$iInsee->infoAdresseDom( $entrep['adr_num'], + $entrep['adr_btq'], + $entrep['adr_typeVoie'], + $entrep['adr_libVoie'], + $entrep['adr_comp'], + $entrep['adr_cp'], + $entrep['adr_ville']); + if (is_array($tabDom) && count($tabDom)>0) { + //$nbDom++; + $tabNace['adrDom']=1; + if (preg_match('/^CHEZ (.*)$/i',$entrep['adr_comp'], $matches) && + !preg_match('/ M | M. | MR | MME | MLLE /i',$entrep['adr_comp'])) + $tabNace['adrDom']=2; + } + } + + if ($siren<>$sirenPre) { + // Lecture du numéro de TVA + $tvaValide=$entrep['tvaIntraValide']; + $tvaCle=$entrep['tvaIntraCle']; + if ($tvaCle===null) { + $iTva=@new MTva($siren, false); + $tabTva=array('tvaIntraCle'=>substr($iTva->vatNumber,2,2)); + } else + $tabTva=array(); + + // Recherche du siren de la maison mère + if ($entrep['nbActio']>0) { + if (isset($tabSirenVisites[$siren*1])) { + $sirenMere=$tabSirenVisites[$siren]; + } else { + $sirenMere=@$iLiens->getMaisonMereFr($siren); + if ($siren<>$sirenMere) { + foreach ($iLiens->tabSirenVisites as $siren1) { + $tabSirenVisites[$siren1*1]=$sirenMere; + } + } + } + if ($siren<>$sirenMere) $tabTva['sirenGrp']=$sirenMere; + } + + // Lecture du dernier bilan + /*$uniteMultiple=1; + $tabPostes=array(); + //if (in_array($siren, $tabBilans)) { + $tabBilan=$iDb2->select('bilans', 'siren, dateExercice, dureeExercice, unite, typeBilan, postes', "siren=$siren AND typeBilan IN ('N','S') ORDER BY dateExercice DESC LIMIT 1", false, MYSQL_ASSOC); + $tabBilan=@$tabBilan[0]; + $tabTmp=explode(';', $tabBilan['postes']); + foreach($tabTmp as $poste) { + if (trim($poste)<>'') { + $tabTmp2=explode('=',$poste); + $tabPostes[trim($tabTmp2[0])]=trim($tabTmp2[1]); + } + } + switch (strtoupper($tabBilan['unite'])) { + case 'K': $uniteMultiple=1000; break; + case 'M': $uniteMultiple=1000000; break; + } + if ($tabBilan['typeBilan']=='S') + $tabPostes=@$iBilan->bilanSimplifie2Normal($tabPostes); + */ + } + + $effectifFr=@$entrep['bilYP']*1; + if ($effectifFr==0) + $effectifFr=$entrep['eff_entrep']; + + $strOutput.=exporte($effectifFr, 6); + $strOutput.=exporte($entrep['eff_etab'], 6); + + if ($entrep['bilAnnee']>1900) { + $montantCA=@$entrep['bilFL']; + + $strOutput.=$entrep['bilType']; // Réel , Inconnu, Estimé + $strOutput.=exporte(str_replace('NS','', @$entrep['bilFL']), 13); + $strOutput.=exporte(str_replace('NS','', @$entrep['bilFK']), 13); + $strOutput.=exporte(str_replace('NS','', @$entrep['bilHN']), 13); + + $montantEBE=@$entrep['bilEBE']; + + $tabUpdate=array_merge($tabTva, $tabNace);//, array('bilTca'=>$iInsee->getTca($montantCA))); + + } elseif ($naf5en<>'' && $naf5en<>'0000Z' && ($effectifFr>0 || ($fJur<2000 && $effectifFr==0)) && $dateCreationEnt<$clotureEstimeYmd) { + /** On estime le CA si : + * - NAF valide, + * - effectif>0 ou CJ=1xxx + * - date de création >= date de cloture estimée + **/ + if ($fJur<2000 && $effectifFr==0) + $caEstime=$iInsee->getCAnafEffectif($naf5en, 1); + else + $caEstime=$iInsee->getCAnafEffectif($naf5en, $effectifFr); + $strOutput.=exporte('E', 1); // Réel , Inconnu, Estimé + $strOutput.=exporte($caEstime, 13); // CA France + $strOutput.=exporte('', 13); // CA Export + $strOutput.=exporte('', 13); // Résultat Net + + $tabUpdate=array_merge($tabTva, $tabNace, + array( 'bilType' =>'E', + 'bilAnnee' =>$anneeEstime, + 'bilCloture'=>$clotureEstime, + 'bilDuree' =>12, + 'bilTca' =>$iInsee->getTca($caEstime), + 'bilFL' =>$caEstime)); + } else { + $strOutput.=exporte('I', 1); // Réel , Inconnu, Estimé + $strOutput.=exporte('', 13); + $strOutput.=exporte('', 13); + $strOutput.=exporte('', 13); + $tabUpdate=array_merge($tabTva, $tabNace); + } + + $iDb2->update('etablissements_act_tmp', $tabUpdate, "siren=$siren AND nic=$nic") or die('Err3:'.mysql_error()); + + fwrite($fp, $strOutput.EOL); + $sirenPre=$siren; + if ($numRow%10000==0) + echo date ('Y/m/d - H:i:s')." - $numRow/$nbRows : $strOutput".EOL; +} +} + +$nbRows=$iDb->select('etablissements_act_tmp', 'DISTINCT sirenGrp', 'sirenGrp>1000', false, MYSQL_ASSOC, true); +echo date ('Y/m/d - H:i:s')." - Il y a $nbRows groupes à mettre à jour...".EOL; +while($entrep=$iDb->fetch(MYSQL_ASSOC)) { + $siren=$entrep['sirenGrp']; + $iDb2->update('etablissements_act_tmp', array('sirenGrp'=>$siren), "siren=$siren") or die('Err4:'.mysql_error()); +} + +$tabNaf5inconnu=array_unique($tabNaf5inconnu); +$tabNaf4inconnu=array_unique($tabNaf4inconnu); +//} + +/** Mise à jour de la date de fin de création de la table **/ +unset($iDb); + +$iDb=new WDB('sdv1'); +$ret=$iDb->select('sphinx_idx', 'id', "nom='jo.etablissements_act' AND createBegin IS NOT NULL AND createBeginupdate('sphinx_idx', array('createEnd'=>date('YmdHis'),'nbLines'=>$nbRowsTot), "id=$id"); +echo mysql_error().EOL; + +echo date ('Y/m/d - H:i:s')." - Historisation des anciens établissements...".EOL; +if (!$iDb->query("INSERT IGNORE INTO jo.etablissements_act_histo SELECT * FROM jo.etablissements_act;")) die($iDb->getLastError()); + +echo date ('Y/m/d - H:i:s')." - Rotation des tables 'etablissements_act'...".EOL; +if (!$iDb->query("DROP TABLE jo.etablissements_act_old;")) die($iDb->getLastError()); +if (!$iDb->query("RENAME TABLE jo.etablissements_act TO jo.etablissements_act_old;")) die($iDb->getLastError()); +if (!$iDb->query("RENAME TABLE jo.etablissements_act_tmp TO jo.etablissements_act;")) die($iDb->getLastError()); + +echo date ('Y/m/d - H:i:s')." - Fin du traitement diffusion des Entreprises.\n"; + +sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', "Diffusion Entreprise", "$nbRowsTot établissements actifs diffusés".EOL.print_r($tabNaf5inconnu, true) .EOL. print_r($tabNaf4inconnu,true) ); + +die(); + + ?> \ No newline at end of file diff --git a/bin/diffusionEntrepA6cmo.php b/bin/diffusionEntrepA6cmo.php new file mode 100644 index 00000000..b7029e8d --- /dev/null +++ b/bin/diffusionEntrepA6cmo.php @@ -0,0 +1,1857 @@ +#!/usr/bin/php +'Quotidien','H'=>'Hebdo','M'=>'Mensuel'); + +/** + * @todo + * + * Lors de la fusion des prestations CRM Bodacc et A6CMO, prendre en compte la date de dernière exécution du traitmenent afin de ne pas renvoyer 2 fois la même information. + * Zipper les fichiers envoyés par mail + * +**/ +include_once(FWK_PATH.'common/chiffres.php'); +include_once(FWK_PATH.'common/dates.php'); +include_once(INCLUDE_PATH.'bodacc/classMBodacc.php'); +include_once(INCLUDE_PATH.'insee/classMInsee.php'); +include_once(INCLUDE_PATH.'conversion/bilAltares.php'); +include_once(INCLUDE_PATH.'partenaires/classMRnvp.php'); +include_once(FWK_PATH.'mail/sendMail.php'); + +$optionEOL=EOL; +$stock=$dateDebut=$idClientTodo=false; +$dateDebutCmd=$listePresta=$forceExec=false; +$envoyerMail=true; + +$tabPrestas=array( + 0=>array( + 'nomClient'=> 'ComComMuretain', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOMURETAIN', + 'clientNumTourFichier'=>4, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '31165,31248,31253,31287,31395,31421,31420,31433,31460,31475,31486,31499,31533,31580,31187,31181', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9223,9224', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'economie@agglo-muretain.fr,jean.louis.bouttier@agglo-muretain.fr', + ), + 1=>array( + 'nomClient'=> 'CAMontauban', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOMONTAUBAN', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 0, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '82121,82025,82124,82044,82195,82167,82001,82090', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'cthau@ville-montauban.fr', + ), + 2=>array( + 'nomClient'=> 'CAHeninCarvin', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOHENINCARVIN', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '62148,62215,62249,62250,62274,62277,62321,62427,62497,62907,62587,62624,62637,62724', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8425Z,8430A,8430B,8430C,8510Z,8520Z,8531Z,8532Z,8541Z,8542Z,9411Z,9412Z,9411Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,3210,3220,4110,4120,4130,4140,4150,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260,9300', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'celine.ort@agglo-henincarvin.fr,jean-pierre.ciesielski@agglo-henincarvin.fr,maxime.delacourt@agglo-henincarvin.fr', + ), + 3=>array( + 'nomClient'=> 'CANimesMetropole', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMONIMESMETRO', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 2, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '30047,30189,30060,30125,30169,30075,30156,30189,30061,30155,30211,30356,30128,30138,30145,30245,30036,30039,30082,30249,30206,30057,30257,30258,30241,30102,30228,30317', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'pierre.rouzet@ville-nimes.fr', + ), + 4=>array( + 'nomClient'=> 'ADACL40MACS', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOADACL40MACS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 2, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '40004,40021,40036,40065,40129,40133,40168,40181,40187,40213,40261,40264,40271,40272,40284,40291,40292,40293,40296,40304,40310,40317,40328', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=>'M', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'duvignau.observatoire@adacl40.fr',//sig@adacl40.fr, + ), + 5=>array( + 'nomClient'=> 'CATerresDeFrance', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=>'DIFINSPRDFTSA6CMOCATDF', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 2, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '93071,93078,93073', + 'CJ'=>'3110,3120,4110,4120,4130,4140,4150,4160,5191,5192,5193,5194,5195,5196,5202,5203,5306,5307,5308,5309,5385,5410,5415,5422,5426,5430,5431,5432,5442,5443,5451,5453,5454,5455,5458,5459,5460,5485,5498,5499,5505,5510,5515,5520,5522,5525,5530,5531,5532,5542,5543,5546,5547,5548,5551,5552,5553,5554,5555,5558,5559,5560,5585,5599,5605,5610,5615,5620,5622,5625,5630,5631,5632,5642,5643,5646,5647,5648,5651,5652,5653,5654,5655,5658,5659,5660,5685,5699,5710,5720,5785,5800,6100,6210,6220,6316,6317,6318,6411,6521,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6551,6554,6558,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6571,6572,6573,6574,6575,6576,6577,6578,6585,6588,6589,6595,6596,6597,6598,6599,6901', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien +//'mailTo'=> 'ylenaour@scores-decisions.com,cendrine.lebouffant@caterresdefrance.fr', + ), + 6=>array( + 'nomClient'=> 'CACLichyMontf', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOCLICHYM', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 2, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '93014,93047', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'julien.aumand@cacm93.fr,jrose.louisds@cacm93.fr', + ), + 7=>array( + 'nomClient'=> 'CAEvryCentreEssonne', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOEVRYCE', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 2, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '91086,91182,91228,91340,91521,91659', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1700,1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'damien.le.mee@agglo-evry.fr', + ), + 8=>array( + 'nomClient'=> 'CASQY', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOSQY', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '78208,78297,78356,78423,78621,78644,78688', + //'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'NAF-'=> '2711Z,4781Z,4782Z,4789Z,4799A,4932Z,5221Z,6820A,6820B,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + //'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'CJ-'=> '1800,2700,6539,6540,6541,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'Jonathan.CRUSSON@agglo-sqy.fr', + ), +/*8=>array( + 'nomClient'=> 'CASQY', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOSQY', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 0, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '78208,78297,78356,78423,78621,78644,78688', + 'NAF-'=> '4782Z,4789Z,4799A,4932Z,5221Z,6820A,6820B,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,6539,6540,6541,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'mailTo'=> 'ylenaour@scores-decisions.com', +),*/ + 9=>array( + 'nomClient'=> 'ComValenton', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOVALENTON', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 0, + 'typeLigneBilan'=> 401, + 'CodeCom'=> 94074, + 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=>'ali.laouari@ville-valenton.fr', + ), + 10=>array( + 'nomClient'=> 'ComComVallonsTour', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOVALLONS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=>'38064,38148,38162,38076,38509,38296,38341,38377,38381,38401', + 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=>'danielle.guicherd@lesvallonsdelatour.fr,matthieu.bodart@lesvallonsdelatour.fr', + ), + 11=>array( + 'nomClient'=> 'CAChotelais', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOCHOTELAIS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=>'49099,49332,49269,49343,49070,49299,49260,49355,49371,49231,49352,49193,49195', + 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', +// 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', +// 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=>'twargnier@agglo-choletais.fr,lcharotte@agglo-choletais.fr', + ), + 12=>array( + 'nomClient'=> 'CAValDeBievres', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSTSTFTSA6CMOVALDEBIEVRES', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=>'94003,94016,94034,94037,94043,94038,94076', + //'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ'=>'5191,5192,5193,5194,5195,5196,5202,5203,5306,5307,5308,5309,5370,5385,5410,5415,5422,5426,5430,5431,5432,5442,5443,5451,5453,5454,5455,5458,5459,5460,5470,5485,5498,5499,5505,5510,5515,5520,5522,5525,5530,5531,5532,5542,5543,5546,5547,5548,5551,5552,5553,5554,5555,5558,5559,5560,5570,5585,5599,5605,5610,5615,5620,5622,5625,5630,5631,5632,5642,5643,5646,5647,5648,5651,5652,5653,5654,5655,5658,5659,5660,5670,5685,5699,5710,5720,5770,5785', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + //'mailTo'=>'twargnier@agglo-choletais.fr', + ), + 13=>array( + 'nomClient'=> 'Anthony', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOANTHONY', + 'clientNumTourFichier'=>2, + 'nbBilansMax'=> 2, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '92002', + 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + //'mailTo'=>'twargnier@agglo-choletais.fr', + ), + /*14=>array( + 'nomClient'=> 'CUB', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSTSTFTSA6CMOMOMCUB', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=>'33003,33004,33013,33032,33039,33056,33063,33065,33075,33096,33119,33162,33167,33192,33069,33200,33519,33249,33273,33273,33312,33318,33376,33434,33449,33487,33522,33550', + 'NAF-'=>'4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + //'mailTo'=>'ylenaour@scores-decisions.com', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + ),*/ + 14=>array( + 'nomClient'=> 'PaysDesCouleurs', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOPAYSCOULEURS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=>'38014,38022,38050,38054,38055,38083,38135,38139,38247,38261,38295,38297,38320,38458,38465,38483,38525,38541,38543,38124', + 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=>'directiondeveloppement@lepaysdescouleurs.fr', + ), + 15=>array( + 'nomClient'=> 'Oleron', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOPMOLERON', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=>'17058,17185,17189,17219,17265,17351,17406,17093,17140,17323,17337,17385,17411,17485,17486', + 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=>'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=>'p.hedin@marennes-oleron.com', + ), + 16=>array( + 'nomClient'=> 'Rosny', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOROSNY', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '93064', + 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=>'economie@mairie-rosny-sous-bois.fr', + ), + 17=>array( + 'nomClient'=> 'CAParisis', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOPARISIS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '95051,95060,95176,95252,95257,95306,95424,95488,95582,95607,95306,95424,95488,95582,95607', + 'NAF-'=>'6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=>'xavier.garnier@agglo-leparisis.fr', + ), + 18=>array( + 'nomClient'=> 'CCdesHERBIERS', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOHERBIERS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '85017,85082,85109,85144,85153,85242,85259,85301', + 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=>'eco@cc-paysdesherbiers.fr', + ), + 19=>array( + 'nomClient'=> 'CAVersaillesGP', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOGRANDPARC', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '78043,91064,78073,78117,78143,78242,78322,78343,78455,78518,78524,78545,78620,78646,78686,78092,78126,78158', + 'CJ-'=> '6539,6540,6541,9150,9210,9220,9221,9222,9223,9224,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'anne.klaric-burban@grandparc.fr', + ), + 20=>array( + 'nomClient'=> 'CAurop\'Essonne', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOEUROPE', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '91044,91136,91161,91216,91339,91345,91363,91377,91425,91458,91587,91661,91665,91666', + 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=>'doua.diawara@europessonne.fr', + ), + 21=>array( + 'nomClient'=> 'CCLandivisiau', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOLANDIVIS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 0, + //'typeLigneBilan'=> 401, + 'CodeCom'=> '29010,29038,29068,29074,29097,29105,29128,29131,29187,29193,29204,29210,29213,29244,29262,29264,29271,29277,29301', + 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=>'n.jezequel-abernot@pays-de-landivisiau.com', + ), +/*22=>array( + 'nomClient'=> 'CCLandivisiau', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOLANDIVIS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 0, +//'typeLigneBilan'=> 401, + 'CodeCom'=> '29097', + 'NAF-'=>'4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=>'1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=>'n.jezequel-abernot@pays-de-landivisiau.com', +),*/ + 22=>array( + 'nomClient'=> 'ADACL40', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOADACL40', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=>3, + 'typeLigneBilan'=>401, + 'CodeCom'=> '40', +// 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', +// 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'mailTo'=> 'maubourguet.observatoire@adacl40.fr', //duvignau.observatoire@adacl40.fr + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + ), + 23=>array( + 'nomClient'=> 'FONTENAY', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOFONTENAY', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 2, + 'typeLigneBilan'=> 401, + 'CodeCom'=> 94033, + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8425Z,8430A,8430B,8430C,8510Z,8520Z,8531Z,8532Z,8541Z,8542Z,9411Z,8412Z,9411Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,3210,3220,4110,4120,4130,4140,4150,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260,9300', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'jeanchristophe.zussa@fontenay-sous-bois.fr,nathalie.chapelle@fontenay-sous-bois.fr', + ), + 24=>array( + 'nomClient'=> 'PLAINECVM94', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOPLAINECVM', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 2, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '94002,94028,94044', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9420Z,9491Z,9492Z,9499Z,9900Z,8425Z,8510Z,8520Z,8531Z,8532Z,8541Z,8542Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260,3210,3220,4110,4120,4130,4140,4150,7340,7344,9300', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'sdespots@agglo-plainecentrale94.fr,agondouinleble@agglo-plainecentrale94.fr', + ), + 25=>array( + 'nomClient'=> 'CACentreMartinique', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOCACEM', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '97209,97213,97224,97229', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'georgina.clouet@cacem-mq.com,yannick.etienne-notte@cacem-mq.com', + ), + 26=>array( + 'nomClient'=> 'TremblayEnFrance', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOTREMBLAY', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 0, + //'typeLigneBilan'=> 401, + 'CodeCom'=> '93073', + 'NAF-'=> '6820A,6820B,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1400,1700,1800,2110,2120,2210,2220,2310,2320,2385,2400,2700,2900,3110,3205,3210,3220,3290,4110,4120,4130,4140,4150,4160,5191,5192,5193,5194,5195,5196,5202,5203,6316,6317,6318,6411,6521,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6551,6554,6558,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6571,6572,6573,6574,6575,6576,6577,6578,6585,6588,6589,6595,6596,6597,6598,6599,6901,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8210,8250,8290,8310,8311,8410,8420,8450,8470,8490,8510,8520,9110,9150,9210,9220,9221,9222,9223,9224,9230,9240,9260,9300,9900,9970', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'developpement.economique@tremblayenfrance.fr,e.kwiatkowski@tremblayenfrance.fr', + ), + 27=>array( + 'nomClient'=> 'CCCentreMauges', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOCCCMAUGES', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 0, + //'typeLigneBilan'=> 401, + 'CodeCom'=> '49006,49023,49027,49072,49151,49162,49165,49239,49243,49312,49375', +// 'NAF-'=> '6820A,6820B,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'm.thibaudeau@cc-centre-mauges.fr', + ), + 28=>array( + 'nomClient'=> 'AUDSeineAval', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOAUDAS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '78123,78140,78138,78624,78642,78015,78090,78033,78029,78238,78451,78327,78401,78403,78460,78609,78638,78113,78317,78189,78049,78010,78196,78672,78415,78227,78431,78384,78382,78380,78368,78305,78261,78206,78172,78299,78440,78466,78643,78498,78005,78362,78531,78528,78118,78202,78239,78354,78361,78391,78437,78501,78291,78057,78089,78255,78276,78320,78068,78337,78410,78344,78385,78444,78147,78107,78188,78082,78558,78559,78668,78324,78530,78484,78503,78325,78536,78567,78647,78677,78597,78230,78020,78031,78070,78072,78104,78231,78234,78245,78246,78281,78290,78296,78300,78314,78402,78335,78217,78267,78608', +// 'NAF-'=> '6820A,6820B,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', +// 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 's.longfier@agglo2rs.fr,sbelkadi@ville-poissy.fr,sacomat@mairie-lesmureaux.fr,p.lecomte@mde-mantois.fr', + ), + 29=>array( + 'nomClient'=> 'CAPlaineCommune', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOPLAINEC', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '93001,93031,93027,93039,93059,93066,93070,93072,93079,75119.3259,75118.6128,75118.7846,75118.2819,75117.9359,75117.3880,75117.4610', +// 'NAF-'=> '6820A,6820B,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> 1800, + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'sandra.laurol@plainecommune.com.fr', + ), + /*31=>array( + 'nomClient'=> 'CAPlaineCommune', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 0, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMO', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '91064', +// 'NAF-'=> '6820A,6820B,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '6539,6540,6541,9150,9210,9220,9221,9222,9223,9224,9230,9240,9260', + 'mailTo'=> 'aferreira@scores-decisions.com', + ),*/ + 30=>array( + 'nomClient'=> 'CCParthenay', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOPARTHENAY', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '79202,79080,79002,79118,79322,79071,79213,79008,79255,79347,79145,79135,79208,79306,79120,79197,79149,79019,79218,79326,79108,79215,79239,79025,79007,79226,79311,79342,79278,79340,79225,79341,79068,79105,79121,79256,79176,79339,79124', +// 'CodeCom'=> '79108', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'becotca@cc-parthenay-gatine.fr,support@scores-decisions.com', + ), + 31=>array( + 'nomClient'=> 'CANimesMetro', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 0, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMONIMESMETRO', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> 30258, + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + //'mailTo'=> '', + ), + 32=>array( + 'nomClient'=> 'A6CMOTest94', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, // Fin du test le 15/07/2014 + 'clientIdentifiant'=> 'DIFINSTSTFTSA6CMOTEST', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> 94081, + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'prestatest_c'=> 1, + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + //'mailTo'=> '', + ), + 33=>array( + 'nomClient'=> 'A6CMOMontfortCom', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOMONTFORT', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 0, + //'typeLigneBilan'=> 401, + 'CodeCom'=> '35023,35040,35133,35188,35203,35227,35277,35331', + //'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1700,1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'pae@cc-montfort.fr', + ), + 34=>array( + 'nomClient'=> 'A6CMOGrandTroyes', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 0, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOTROYES', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '10060,10067,10173,10081,10321,10265,10260,10297,10325,10333,10343,10344,10357,10362,10340,10387,10363,10381,10406', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8425Z,8430A,8430B,8430C,8510Z,8520Z,8531Z,8532Z,8541Z,8542Z ,9411Z,8412Z,9411Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,3210,3220,4110,4120,4130,4140,4150,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260,9300', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'olivier.alves@grand-troyes.fr,lauriane.sauvadet@grand-troyes.fr', + ), + 35=>array( + 'nomClient'=> 'CAChotelais', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 0, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOCHOTELAIS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '49099,49332,49269,49343,49070,49299,49260,49355,49371,49231,49352,49193,49195', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'twargnier@agglo-choletais.fr,lcharotte@agglo-choletais.fr', + ), + 36=>array( + 'nomClient'=> 'CcPaysDeNay', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOPAYSNAY', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '64067,64413,64023,64054,64058,64068,64091,64101,64109,64119,64133,64137,64138,64145,64148,64191,64257,64270,64302,64339,64386,64400,64417,64444,64469,64498,65176,65018', + 'NAF-'=> '4799A,4950Z,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'f.gonnet@paysdenay.fr', + ), + 37=>array( + 'nomClient'=> 'CcPaysDeNay', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 0, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOPAYSNAY', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '64067,64413,64023,64054,64058,64068,64091,64101,64109,64119,64133,64137,64138,64145,64148,64191,64257,64270,64302,64339,64386,64400,64417,64444,64469,64498,65176,65018', + 'NAF'=> '4781Z,4782Z,4789Z,6820A,6820B', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + //'mailTo'=> '', + ), + 38=>array( + 'nomClient'=> 'CcEstTourangeau', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 0, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOESTTOUR', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '37015,37124,37273,37267,37156', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'soufiane.khachlaa@cc-est-tourangeau.fr', + ), + 39=>array( + 'nomClient'=> 'CAValMaubuée', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOMAUBUEE', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '77468,77083,77337,77258,77169,77146', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,6539,6540,6541,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'observatoire@valmaubuee.fr', + ), + 40=>array( + 'nomClient'=> 'CACergy', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOCERGY', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '78382,95074,95127,95183,95218,95323,95388,95450,95476,95500,95510,95572,95637', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,9411Z,9412Z,9411Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,8310,8311,8410,8420,8450,8490', + //'CJ'=> '9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'amandine.masse@cergypontoise.fr,blandine.gaombalet@cergypontoise.fr,romaric.moyon@cergypontoise.fr', + ), + 41=>array( + 'nomClient'=> 'CAPlateauSaclay', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOCAPS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '91477,91471,91272,91122,91312,91692,91275,91534,91679,91635,91538', + 'NAF-'=> '4110D,4950Z,6420Z,6430Z,6619A,6820A,6820B,6832B,7010Z,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8425Z,8430A,8430B,8430C,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,3210,4110,4120,4130,4140,4150,4160,6539,6540,6541,6542,6543,6544,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,9110,9150,9210,9220,9222,9223,9230,9240,9260,9300', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'myriam.bardy@caps.fr,deveco@caps.fr', + ), + 42=>array( + 'nomClient'=> 'ComMerignac', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOMERIGNAC', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> 33281, + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'economie@merignac.com', + ), + 43=>array( + 'nomClient'=> 'CUB', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRODFTSA6CMOMOMCUB', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '33003,33004,33013,33032,33039,33056,33063,33065,33075,33096,33119,33162,33167,33192,33069,33200,33519,33249,33273,33273,33312,33318,33376,33434,33449,33487,33522,33550', + 'NAF-'=> '4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'Q', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'dirfapagde@cu-bordeaux.fr', + ), + 44=>array( + 'nomClient'=> 'CC Vallet', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOVALLET', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '44032,44108,44117,44140,44212,44016', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'cjousseaume@cc-vallet.fr,sruaud@cc-vallet.fr', + ), + 45=>array( + 'nomClient'=> 'Sartrouville', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOSARTROUVIL', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> 78586, + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'economique@ville-sartrouville.fr', + ), + 46=>array( + 'nomClient'=> 'CA Seine Amont', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOAMONT', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '94041,94081,94022', + //'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,6539,6540,6541,9210,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'charles.seban@seine-amont.fr', + ), + 47=>array( + 'nomClient'=> 'CC Lacs Essonne', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOLACS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '91286,91687', + 'CJ-'=> '1800,2700,6200,6210,6220,6511,6521,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6551,6554,6558,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6571,6572,6573,6574,6575,6576,6577,6578,6585,6588,6589,6595,6596,6597,6598,6599,7111,7112,7113,7120,7130,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,9110,9150,9210,9220,9221,9222,9223,9224,9230,9240,9260,9300,9900,9970', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'o.drouen@leslacsdelessonne.fr', + ), + 48=>array( + 'nomClient'=> 'CA La Brie Francilienne', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOBRIE', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '77390,77373', + 'CJ-'=> '1800,2700,6200,6210,6220,6511,6521,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6551,6554,6558,6560,6561,6562,6563,6564,6565,6566,6567,6568,6569,6571,6572,6573,6574,6575,6576,6577,6578,6585,6588,6589,6595,6596,6597,6598,6599,7111,7112,7113,7120,7130,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,9110,9150,9210,9220,9221,9222,9223,9224,9230,9240,9260,9300,9900,9970', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'b.amar@briefrancilienne.fr', + ), + 49=>array( + 'nomClient'=> 'CAPlaineCommuneAmelia', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 0, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOPLAINECTEST', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> // '93001,93031,93027,93039,93059,93066,93070,93072,93079, + '75119.3259,75118.6128,75118.7846,75118.2819,75117.9359,75117.3880,75117.4610', + // 75119.3259 - Rue Emile Reynaud + // 75118.6128 - Impasse MArteau + // 75118.7846 - Rue du prof gosset + // 75118.2819 - Rue du dr babinski + // 75117.9359 - Rue toulouse lautrec + // 75117.3880 - Rue fructidor + // 75117.4610 - Rue herault de seychelles + + // 'NAF-'=> '6820A,6820B,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> 1800, + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'aferreira@scores-decisions.com,ylenaour@scores-decisions.com', + ), + 50=>array( + 'nomClient'=> 'MEIFE93', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOMEIFE', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '93005,93007,93071,93073,93078', +// 'NAF-'=> '6820A,6820B,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', +// 'CJ-'=> 1800, + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'fzahaf@meife-93.com,fsalah@meife-93.com', + ), + 51=>array( + 'nomClient'=> 'CC_MONTESQUIEU', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOMONTESQ', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '33501,33474,33454,33448,33274,33238,33213,33206,33109,33080,33077,33037,33023', + 'NAF-'=> '8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8425Z,8430A,8430B,8430C,8510Z,8520Z,8531Z,8532Z,8541Z,8542Z,8411Z,8412Z,9411Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,3210,3220,4110,4120,4130,4140,4150,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9230,9240,9260,9300', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'assistant-economie@cc-montesquieu.fr', + ), + 52=>array( + 'nomClient'=> 'CC_PaysChallans', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOCHALLANS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '85024,85047,85062,85095,85096,85280', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8425Z,8430A,8430B,8430C,8510Z,8520Z,8531Z,8532Z,8541Z,8542Z,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260,9300', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'resp-eco@cc-paysdechallans.fr', + ), + 53=>array( + 'nomClient'=> 'Gennevilliers', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOGENVIL', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> 92036, + 'NAF-'=> '6420Z,6430Z,6612Z,6810Z,6820Z', + 'CJ-'=> '1800,6539,6540,6541', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'service-economique@ville-gennevilliers.fr', + ), + 54=>array( + 'nomClient'=> 'Bonneuil', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOBONNEUIL', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> 94011, + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260,9300', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'ecobo@bonneuil94.fr', + ), + 55=>array( + 'nomClient'=> 'CAEstEnsemble', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOESTENS', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '93006,93008,93010,93045,93048,93053,93061,93055,93063', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8421Z,8424Z,8425Z,8510Z,8520Z,9491Z,9492Z,9900Z', + 'CJ-'=> '1800,2700,3110,3210,6539,6540,6541,7111,7225,7312,7313,7314,7322,7323,7340,7341,7342,7343,7344,7346,7347,7356,7362,7365,7372,7378,7430,7450,7470,7490,9240,9260', + 'freqenvois'=> 'H', // H:Hebdo, M=Mensuel, Q=Quotidien + 'mailTo'=> 'thomas.annonier@est-ensemble.fr', + ), +/* + 1000=>array( + 'nomClient'=> 'CC_MONTROUGE', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOMONTROUGE', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '92049', + 'NAF-'=> '8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8425Z,8430A,8430B,8430C,8510Z,8520Z,8531Z,8532Z,8541Z,8542Z,8411Z,8412Z,9411Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ'=> '5720', + 'freqenvois'=> 'S', // H:Hebdo, M=Mensuel, Q=Quotidien, S=Sans fréquence/Non défini (pour les tests) + 'mailTo'=> 'support@scores-decisions.com', + ), + 1001=>array( + 'nomClient'=> 'CC_ALES', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOALES', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '30007', + 'NAF-'=> '8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8425Z,8430A,8430B,8430C,8510Z,8520Z,8531Z,8532Z,8541Z,8542Z,8411Z,8412Z,9411Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ'=> '5720', + 'freqenvois'=> 'S', // H:Hebdo, M=Mensuel, Q=Quotidien, S=Sans fréquence/Non défini (pour les tests) + 'mailTo'=> 'support@scores-decisions.com', + ), + 1002=>array( + 'nomClient'=> 'CCValIlle', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOILLE', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '35193', + 'NAF-'=> '8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8425Z,8430A,8430B,8430C,8510Z,8520Z,8531Z,8532Z,8541Z,8542Z,8411Z,8412Z,9411Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ'=> '5191,5192,5193,5194,5195,5196,5202,5203,5306,5307,5308,5309,5370,5385,5410,5415,5422,5426,5430,5431,5432,5442,5443,5451,5453,5454,5455,5458,5459,5460,5470,5485,5488,5498,5499,5505,5510,5515,5520,5522,5525,5530,5531,5532,5542,5543,5546,5547,5548,5551,5552,5553,5554,5555,5558,5559,5560,5570,5585,5599,5605,5610,5615,5620,5622,5625,5630,5631,5632,5642,5643,5646,5647,5648,5651,5652,5653,5654,5655,5658,5659,5660,5670,5685,5699,5710,5720,5770,5785,5800', + 'freqenvois'=> 'S', // H:Hebdo, M=Mensuel, Q=Quotidien, S=Sans fréquence/Non défini (pour les tests) + 'mailTo'=> 'support@scores-decisions.com', + ), + 1003=>array( + 'nomClient'=> 'CCSudPaysBasque', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOSUDBASQUE', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '64260', + 'NAF-'=> '8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8425Z,8430A,8430B,8430C,8510Z,8520Z,8531Z,8532Z,8541Z,8542Z,8411Z,8412Z,9411Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ'=> '5710,5720,5770,5785', + 'freqenvois'=> 'S', // H:Hebdo, M=Mensuel, Q=Quotidien, S=Sans fréquence/Non défini (pour les tests) + 'mailTo'=> 'support@scores-decisions.com', + ), + 1004=>array( + 'nomClient'=> 'CULilleMetro', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOLILLE', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '59328', + 'CJ'=> '5710', + 'freqenvois'=> 'S', // H:Hebdo, M=Mensuel, Q=Quotidien, S=Sans fréquence/Non défini (pour les tests) + 'mailTo'=> 'support@scores-decisions.com', + ), + 1005=>array( + 'nomClient'=> 'CCOuestGuyane', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOGUYANE', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '97306', + 'CJ'=> '5505,5510,5515,5520,5522,5525,5530,5531,5532,5542,5543,5546,5547,5548,5551,5552,5553,5554,5555,5558,5559,5560,5570,5585,5599,5605,5610,5615,5620,5622,5625,5630,5631,5632,5642,5643,5646,5647,5648,5651,5652,5653,5654,5655,5658,5659,5660,5670,5685,5699,5710,5720,5770,5785', + 'freqenvois'=> 'S', // H:Hebdo, M=Mensuel, Q=Quotidien, S=Sans fréquence/Non défini (pour les tests) + 'mailTo'=> 'support@scores-decisions.com', + ), +/*8=>array( + 'nomClient'=> 'CASQY', + 'typePrestaton'=> 'diffusionInsee', + 'prestaActive'=> 1, + 'clientIdentifiant'=> 'DIFINSPRDFTSA6CMOSQY', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=> 3, + 'typeLigneBilan'=> 401, + 'CodeCom'=> '78208,78297,78356,78423,78621,78644,78688', + 'NAF-'=> '4782Z,4789Z,4799A,4932Z,5221Z,6820A,6820B,9411Z,9412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,6539,6540,6541,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + 'mailTo'=> 'ylenaour@scores-decisions.com,Jonathan.CRUSSON@agglo-sqy.fr', +), +/* + 4=>array( + 'nomClient'=> 'Tremblay', + 'typePrestaton'=>'diffusionInsee', + 'clientIdentifiant'=>'DIFINSPRDFTSA6CMOTREMBLAY', + 'clientNumTourFichier'=>1, + 'nbBilansMax'=>2, + 'typeLigneBilan'=>401, + 'CodeCom'=> '30047,30189,30060,30125,30169,30075,30156,30189,30061,30155,30211,30356,30128,30138,30145,30245,30036,30039,30082,30249,30206,30057,30257,30241,30102,30228,30317', + 'NAF-'=> '4781Z,4782Z,4789Z,4799A,4950Z,6820A,6820B,8411Z,8412Z,8413Z,8421Z,8422Z,8423Z,8424Z,8430A,8430B,8430C,9411Z,8412Z,9420Z,9491Z,9492Z,9499Z,9900Z', + 'CJ-'=> '1800,2700,3110,3205,6539,6540,6541,7111,7112,7113,7120,7150,7160,7171,7172,7179,7190,7210,7220,7225,7229,7230,7312,7313,7314,7321,7322,7323,7331,7341,7342,7343,7345,7346,7347,7348,7349,7351,7352,7353,7354,7355,7356,7361,7362,7363,7364,7365,7366,7371,7372,7373,7378,7379,7381,7382,7383,7384,7385,7389,7410,7430,7450,7470,7490,8110,8120,8130,8140,8150,8160,8170,8190,8310,8311,8410,8420,8450,8490,9110,9150,9210,9220,9222,9223,9230,9240,9260', + //'mailTo'=>'e.kwiatkowski@tremblayenfrance.fr', + 'mailTo'=> 'ylenaour@scores-decisions.com', + ), + */ +); + +$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] +Production de stock/Diffusion des bases A6CMO (ce traitement ce lance automatiquement pour les diffusions le lundi). + +Options : + -s Génération du stock + -d=SSAAMMJ(JHHIISS) Diffusion depuis le SSAAMMJJ ou SSAAMMJJHHIISS + -c=XXX N° de client/prestation + -l Liste des clients/prestations + -v Verbosité maximum + -m Ne pas envoyer d'email + -f Forcer l'exécution + -r=XXX Reprendre le traitement au client/prestation n°XXX +"; + +$argv=$_SERVER['argv']; +if ($_SERVER['argc']>1) +{ + for ($i=1; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (strtolower(substr($argv[$i],1,1))) { + case 's': $stock=true; break; + case 'v': $debug=true; break; + case 'f': $forceExec=true; break; + case 'd': $dateDebutCmd=strtr(substr($argv[$i],3),array('-'=>'',':'=>''))*1; break; + case 'c': $idClientTodo=substr($argv[$i],3); break; + case 'r': $iRepriseClient=substr($argv[$i],3); break; + case 'l': $listePresta=true; break; + case 'm': $envoyerMail=false; break; + case '-': + case '?': die($strInfoScript); break; + default: die('Option '. $argv[$i] . " inconnue !\n"); break; + } + } else $tabFichier[]=$argv[$i]; + } +} + +/* +$ACTIVNAT=' '; +echo '$ACTIVNAT=\''. $ACTIVNAT."'\t"; +if ($ACTIVNAT>'00' && $ACTIVNAT<'99' && $ACTIVNAT<>'NN') + echo 'VRAI'.EOL; +else + echo 'FAUX'.EOL; + +die(); +*/ + +if ($listePresta) { + foreach ($tabPrestas as $idClient=>$tabPresta) { + $nomClient=$tabPresta['nomClient']; + $typePrestaton=$tabPresta['typePrestaton']; + $clientIdentifiant=$tabPresta['clientIdentifiant']; + $strDepCom=$tabPresta['CodeCom']; + $nbBilansMax=$tabPresta['nbBilansMax']; + $typeLigneBilan=$tabPresta['typeLigneBilan']; + $prestaActive=$tabPresta['prestaActive']; + if($prestaActive) echo "Actif\t"; + else echo "INACTIF\t"; + $freq=$tLibFreq[$tabPresta['freqenvois']]; + echo "n°$idClient\t$clientIdentifiant\t$nomClient\t$tabDepCom\t$nbBilansMax bilans\t$freq".EOL; + } + die(); +} + +if ($dateDebutCmd!==false) { + if (strlen($dateDebutCmd)==8) + $dateDebut=WDate::dateT('Ymd','Y-m-d',$dateDebutCmd).' 00:00:00'; + elseif (strlen($dateDebutCmd)==14) + $dateDebut=WDate::dateT('YmdHis','Y-m-d H:i:s',$dateDebutCmd); + elseif ($dateDebutCmd==0) + $dateDebut=WDate::dateT('Ymd','Y-m-d',WDate::getNextDate(date('Ymd'), -7)).' 00:00:00'; + else + die('Format de date incorrecte !'.EOL); +} + +$iDb=new WDB('jo'); +$iDb2=new WDB('jo'); +$iInsee=new MInsee(); +$iBodacc=new MBodacc(); +$iRnvp=new MRnvp(); + +$tabProduction=array(); + +foreach ($tabPrestas as $idClient=>$tabPresta) { + if ($iRepriseClient>$idClient) continue; + $numPrestation=$idClient; + + $nomClient=$tabPresta['nomClient']; + $typePrestaton=$tabPresta['typePrestaton']; + $clientIdentifiant=$tabPresta['clientIdentifiant']; + $clientNumTourFichier=$tabPresta['clientNumTourFichier']; + $tabFJ=explode(',',$tabPresta['CJ']); + $tabFJexclus=explode(',',$tabPresta['CJ-']); + $tabNAF=explode(',',$tabPresta['NAF']); + $tabNAFexclus=explode(',',$tabPresta['NAF-']); + $tabDepCom=explode(',',$tabPresta['CodeCom']); + $nbBilansMax=$tabPresta['nbBilansMax']; + $typeLigneBilan=$tabPresta['typeLigneBilan']; + $prestaActive=$tabPresta['prestaActive']; + + if (($idClientTodo && $idClientTodo<>$idClient) || $prestaActive===0 && $forceExec==false) { + echo date('Y/m/d - H:i:s') ." - On ignore le traitement pour '$nomClient'...".EOL; + continue; + } elseif (@$tabPresta['freqenvois']=='M' && (!$stock || !$forceExec)) { + // Fréquence Mensuelle : le 1er lundi du mois + if((date('w')<>1 || date('d')*1>7) && $forceExec==false) { + echo date('Y/m/d - H:i:s') ." - On ignore le traitement Mensuel pour '$nomClient'...".EOL; + continue; + } elseif ($dateDebutCmd==false) { + // Si aucune date de début de périmètre alors on force au mois précédent + $dateDebut=WDate::dateT('Ymd','Y-m-d',WDate::getNextDate(date('Ymd'), -31)).' 00:00:00'; + //$dateDebut=20130101; + } + } elseif ((@$tabPresta['freqenvois']=='H' || @$tabPresta['freqenvois']=='') && !$stock) { + // Fréquence Hebdomadaire (par défaut) : le lundi + if(date('w')<>1 && !$forceExec) { + echo date('Y/m/d - H:i:s') ." - On ignore le traitement Hebdo pour '$nomClient'...".EOL; + continue; + } elseif ($dateDebutCmd==false) { + // Si aucune date de début de périmètre alors on force au mois précédent + $dateDebut=WDate::dateT('Ymd','Y-m-d',WDate::getNextDate(date('Ymd'), -7)).' 00:00:00'; + //$dateDebut=20130101; + } + } elseif (@$tabPresta['freqenvois']=='Q' && !$stock) { + // Fréquence Quotidienne : du lundi au vendredi + if((date('w')==0 || date('w')==6) && !$forceExec) { + echo date('Y/m/d - H:i:s') ." - On ignore le traitement Quotidien pour '$nomClient'...".EOL; + continue; + } elseif ($dateDebutCmd==false) { + if (date('w')==1) + $dateDebut=WDate::dateT('Ymd','Y-m-d',WDate::getNextDate(date('Ymd'), -3)).' 00:00:00'; + else + $dateDebut=WDate::dateT('Ymd','Y-m-d',WDate::getNextDate(date('Ymd'), -1)).' 00:00:00'; + } + } + + if ($idClientTodo && $idClientTodo==$idClient) { + $nomClientTodo=$nomClient; + $numPrestationTodo=$numPrestation; + } + + if (@$tabPresta['prestatest_c']==1) { + echo date('Y/m/d - H:i:s') ." - Prestation pour '$nomClient' en TEST (@todo ne pas compter les RDV Insee)...".EOL; + } + +/** + ** On génère la ligne d'entête + **/ + $fp=fopen(REP_TEMP . $typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt', 'w'); + if ($fp==false) die('ERREUR : Impossible de créer le fichier !'); + //error_reporting(E_ALL ^ E_NOTICE); + $dateDeb=date('YmdHis'); + $str= initstr('001', 3, '0', ALIGN_RIGHT) . // Type de ligne + initstr($dateDeb, 14) . // Date de génération du fichier + initstr($clientNumTourFichier, 10, '0', ALIGN_RIGHT) . // Numéro de tour du fichier pour le client + initstr($clientIdentifiant, 36) . // Identifiant Client + initstr($typePrestaton, 32) . // Type de prestation + initstr(VERSION_FICHIER_IDENTITE, 4) . // Type de prestation + initstr(FILLER, 1901) . // FILLER + ''; + $tabProduction[$idClient]['nomClient']=$nomClient; + $tabProduction[$idClient]['dateDeb']=$dateDeb; + $tabProduction[$idClient]['dateRetro']=$dateDebut; + $tabProduction[$idClient]['frequence']=@$tabPresta['freqenvois']; + $timeDeb = microtime(true); + fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE).$optionEOL); + $nbLignes=1; + + //print_r($tabFJ); + + if (count($tabFJ)>0 && $tabFJ[0]<>'') + $strFJ =' AND cj IN('.implode(',',$tabFJ).') '; + elseif (count($tabFJexclus)>0 && $tabFJexclus[0]<>'') + $strFJ =' AND cj NOT IN('.implode(',',$tabFJexclus).') '; + else + $strFJ =''; + + if (count($tabNAF)>0 && $tabNAF[0]<>'') + $strNAF=" AND ape_etab IN('".implode("','",$tabNAF)."') "; + elseif (count($tabNAFexclus)>0 && $tabNAFexclus[0]<>'') + $strNAF=" AND ape_etab NOT IN('".implode("','",$tabNAFexclus)."') "; + else + $strNAF =''; + + /* @modif du 08/10/2014 + * $strDepCom="'".implode("','",$tabDepCom)."'"; + * par : + * insDEPET et + insCOMET + */ + $strDepCom=$strDepComStock=''; + foreach ($tabDepCom as $idepcom=>$depcom) { + /** @todo Vérifier si la corse fonctionne **/ + if ($idepcom==0) { + $strDepCom.="AND ("; + $strDepComStock.="AND ("; + } + $strDepCom.="(insDEPET IN ('".substr($depcom,0,2)."','0".substr($depcom,0,2)."'"; + $strDepComStock.="(adr_dep IN ('".substr($depcom,0,2)."','0".substr($depcom,0,2)."'"; + if (substr($depcom,0,2)>96) { + $strDepCom.=",'".substr($depcom,0,3)."'"; + $strDepComStock.=",'".substr($depcom,0,3)."'"; + } + $strDepCom.=") "; $strDepComStock.=") "; + if (substr($depcom,2,3)*1==0) $depSeul=true; + else { + $depSeul=false; + $strDepCom.="AND insCOMET=".substr($depcom,2,3); + $strDepComStock.="AND adr_com=".substr($depcom,2,3); + // On test si il y a présence d'un code rivoli séparé par un point "." + if (substr($depcom,5,1)=='.') { + $strDepCom.=" AND insCODEVOIE LIKE '".substr($depcom,6,4)."%'"; + $strDepComStock.=" AND rivoli LIKE '".substr($depcom,6,4)."%'"; + } + } + $strDepCom.=") "; $strDepComStock.=") "; + if (isset($tabDepCom[$idepcom+1])) { $strDepCom.=' OR '; $strDepComStock.=' OR '; } + elseif (trim(substr($depcom,3,2))<>'') { $strDepCom.=')'; $strDepComStock.=')'; } + elseif ($depSeul) { $strDepCom.=')'; $strDepComStock.=')'; } + } + + // Com Com Muretains + if ($stock) + echo date('Y/m/d - H:i:s') ." - Sélection du stock pour '$nomClient' (dernier ".@$tabPresta['freqenvois']." le $dateDebut).".EOL; + else + echo date('Y/m/d - H:i:s') ." - Sélection de la cible ".@$tabPresta['freqenvois']." pour '$nomClient' depuis $dateDebut...".EOL; + + if ($stock) { + $field='siren, nic'; + $table='etablissements_old'; + $where="source=2 AND actif=1 AND siege IN (0,1) $strDepComStock $strFJ $strNAF"; + $nbEtab=$iDb->select($table, $field, $where, true, MYSQL_ASSOC, true); + if (mysql_errno()==1146) { + // Table don't exist ? + $table='etablissements'; + $nbEtab=$iDb->select($table, $field, $where, true, MYSQL_ASSOC, true); + } + } + else { + $strFJ=str_replace(' cj ',' insCJ ', $strFJ); + $strNAF=str_replace(' ape_etab ',' insAPET700 ', $strNAF); + $field='insSIREN AS siren, insNIC AS nic, + insDESTINAT, insEVE, insDATEVE, insTYPETAB, insSIRETPS, insSIRETASS, MAX(insMNICSIEGE) AS insMNICSIEGE, MAX(insMNOMEN) AS insMNOMEN, MAX(insMCJ) AS insMCJ, + MAX(insMAPEN) AS insMAPEN, MAX(insMENSEIGNE) AS insMENSEIGNE, MAX(insMAPET) AS insMAPET, MAX(insMADRESSE) AS insMADRESSE, MAX(insMAUXILT) AS insMAUXILT, + MAX(insMSIGLE) AS insMSIGLE, MAX(insMEXPLEN) AS insMEXPLEN, MAX(insMEXPLET) AS insMEXPLET, insDREACTET, insDREACTEN'; + $table='insee.insee_even'; + $where="1 $strDepCom $strFJ $strNAF AND dateInsert>='$dateDebut' AND (insVMAJ NOT IN ('I','F') OR insVMAJ2=1 OR insVMAJ3=1) GROUP BY insSIREN, insNIC"; + $nbEtab=$iDb->select($table, $field, $where, true, MYSQL_ASSOC, true); + } + + echo "SELECT $field +FROM $table +WHERE $where; +"; + echo mysql_error().EOL; + echo date('Y/m/d - H:i:s') ." - Nombre d'établissement en sortie : ".$nbEtab.EOL; + $tabProduction[$idClient]['nbEtabs']=$nbEtab; + $lL=0; + $nbLignes200=$nbLignesBil=0; + while($lSiret=$iDb->fetch(MYSQL_ASSOC)) { + $lL++; + // Réinitialisation de zones + $ev_EVE=$ev_TYPETAB=$ev_DESTINAT=''; + $ev_SIRETLIE=$ev_SIRETLIETYPE=$ev_MNICSIEGE=$ev_MNOMEN=$ev_MCJ=$ev_MAPEN=$ev_DREACTEN=$ev_DATEFEREN=$ev_DATEVE=0; + $ev_MENSEIGNE=$ev_MAPET=$ev_MADRESSE=$ev_MAUXILT=$ev_MSIGLE=$ev_MEXPLEN=$ev_MEXPLET=0; + + $siren=$lSiret['siren']; + $nic=$lSiret['nic']; + $t1=microtime(1); + $a=@$iInsee->getIdentiteEntreprise($siren,$nic); + $t2=microtime(1); + @$tTime['Identite']+=$t2-$t1; + $b=@$iInsee->getInfosNotice($siren,$nic); + $t3=microtime(1); + @$tTime['Notice']+=$t3-$t2; + $c=@$iInsee->getAdresse($siren,$nic); + $t4=microtime(1); + @$tTime['Adresse']+=$t4-$t3; + + if (!$stock) { + $ev_EVE=trim($lSiret['insEVE']); + // Conversion de sirene4 en sirene3 + switch($ev_EVE) { + case 'CE': // Création établissement + case 'CC': // Création par le calage + $ev_EVE=130; // Création de l'établissement + break; + case 'CS': // Création siège + $ev_EVE=110; // Création de l'entreprise + break; + case 'SU': // Cessation juridique + $ev_EVE=410; // Cessation juridique de l'entreprise + break; + case 'O': // Sortie du champ de la diffusion commerciale + $ev_EVE=795; // Personne radiée à sa demande de de la base SIRENE diffusion + break; + case 'RI': // Refus d'immatriculation au RCS + $ev_EVE=810; // Suppression du SIREN suite au refus d'inscription au RCS + break; + case 'I': // Entrée dans le champ de la diffusion commerciale + $ev_EVE=125; // Réactivation de l'entreprise suite à une mise à jour du répertoire SIRENE + break; + case 'RE': // Réactivation établissement + $ev_EVE=145; // Reprise d'activité de l'établissement suite à une mise à jour du répertoire SIRENE + break; + case 'RS': // Réactivation siège + $ev_EVE=120; // Réactivation de l'entreprise + break; + case 'SE': // Fermeture (ou désactivation) établissement + $ev_EVE=430; // Fermeture de l'établissement + break; + case 'SS': // Fermeture (ou désactivation) siège + $ev_EVE=425; // Absence d'activité d'une entreprise suite à une mise à jour au répertoire SIRENE + break; + case 'MC': // Modification par le calage + $ev_EVE=781; // Modification de l'établissement suite à correction d'erreur + break; + case 'SC': // Suppression par le calage + $ev_EVE=435; // Fermeture de l'établissement suite à une mise à jour au répertoire SIRENE + break; + case 'ME': // Modification établissement + $ev_EVE=780; // Modification de l'établissement + break; + case 'MS': // Modification siège + $ev_EVE=610; // Modification d'activité au niveau du SIREN associé à une activation économique par adjonction de moyens de production + break; + case 'MU': // Modification entreprise + $ev_EVE=631; // Modification d'activité du SIREN + break; + case 'MTDE': // Modification établissement départ (transfert) + case 'MTAE': // Modification établissement arrivée (transfert) + case 'MTDS': // Modification siège départ (transfert) + case 'MTAS': // Modification siège arrivée (transfert) + $ev_EVE=540; // Modification de l'établissement d'arrivée et modification de l'établissement de départ dans le cadre d'un transfert + break; + case 'CTE': // Création établissement (transfert) + case 'CTS': // Création siège (transfert) + $ev_EVE=520; // Création de l'établissement d'arrivée et modification de l'établissement de départ dans le cadre d'un transfert + break; + case 'STE': // Fermeture établissement (transfert) + case 'STS': // Fermeture siège (transfert) + $ev_EVE=530; // Modification de l'établissement d'arrivée et cessation de l'établissement de départ dans le cadre d'un transfert + break; + default: + $ev_EVE=substr($ev_EVE,0,3); + break; + } + $ev_DATEVE=$lSiret['insDATEVE']; + $ev_TYPETAB=$lSiret['insTYPETAB']; + $ev_DESTINAT=$lSiret['insDESTINAT']; + switch($ev_EVE*1) { + case 410: + case 420: + case 425: + $ev_DATEFEREN=substr(strtr($ev_DATEVE,array('-'=>'',':'=>'')),0,8); + break; + } + $ev_SIRETLIE=$lSiret['insSIRETPS']*1; + if ($ev_SIRETLIE<1000) { + $ev_SIRETLIE=$lSiret['insSIRETASS']*1; + if ($ev_SIRETLIE<1000) $ev_SIRETLIETYPE=''; + else $ev_SIRETLIETYPE='A'; + } else + $ev_SIRETLIETYPE='P'; + $ev_MNICSIEGE=$lSiret['insMNICSIEGE']; + $ev_MNOMEN=$lSiret['insMNOMEN']; + $ev_MCJ=$lSiret['insMCJ']; + $ev_MAPEN=$lSiret['insMAPEN']; + $ev_MENSEIGNE=$lSiret['insMENSEIGNE']; + $ev_MAPET=$lSiret['insMAPET']; + $ev_MADRESSE=$lSiret['insMADRESSE']; + $ev_MAUXILT=$lSiret['insMAUXILT']; + $ev_MSIGLE=$lSiret['insMSIGLE']; + $ev_MEXPLEN=$lSiret['insMEXPLEN']; + $ev_MEXPLET=$lSiret['insMEXPLET']; + $ev_DREACTEN=$lSiret['insDREACTEN']; + } + + $tmp=$iDb2->select('jo.etablissements_act', 'bilType, bilAnnee, bilTca, bilFL', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC, false); + if (count($tmp)>0) { + $tcaSED=$tmp[0]['bilTca']; + $tcaSEDtype=$tmp[0]['bilType']; + $tcaSEDannee=$tmp[0]['bilAnnee']; + $tcaSEDmt=$tmp[0]['bilFL']; + } else { + $tcaSED=' '; + $tcaSEDtype='I'; + $tcaSEDannee='0000'; + $tcaSEDmt=0; + } + + // Forcage pour idclient=3 nimes metropole !!! + if ($idClient==3 && $tcaSED<>' ') $a['TrancheCA']=$tcaSED; + + $tabRnvp=$iRnvp->getAdresseRnvpSource(2, $a['SourceId']); + $codeRnvp=$tabRnvp['CQAdrRnvp']*1; + if ($codeRnvp>0) { + $L1rnvp=strtr($tabRnvp['L1rnvp'],'/*',' '); + $L2rnvp=$tabRnvp['L2rnvp']; + $L3rnvp=$tabRnvp['L3rnvp']; + $L4rnvp=$tabRnvp['L4rnvp']; + $L5rnvp=$tabRnvp['L5rnvp']; + $L6rnvp=$tabRnvp['L6rnvp']; + $L7rnvp=$tabRnvp['L7rnvp']; + } elseif (trim($a['L1_NOMEN'])<>'' && trim($a['L4_VOIE'])<>'' && trim($a['L6_POST'])<>'') { + // On prend l'adresse RNVP origine INSEE (Syracuse) + $L1rnvp=strtr($a['L1_NOMEN'],'/*',' '); + $L2rnvp=$a['L2_COMP']; + $L3rnvp=$a['L3_CADR']; + $L4rnvp=$a['L4_VOIE']; + $L5rnvp=$a['L5_DISP']; + $L6rnvp=$a['L6_POST']; + $L7rnvp=$a['L7_ETRG']; + } else { + // Historique Insee Notice 80 + $L1rnvp=strtr($c['L1_NOM'],'/*',' '); + $L2rnvp=$c['L2_NOM2']; + $L3rnvp=$c['L3_ADRCOMP']; + $L4rnvp=$c['L4_VOIE']; + $L5rnvp=$c['L5_DISTSP']; + $L6rnvp=$c['L6_POST']; + $L7rnvp=$c['L7_PAYS']; + } + + $str= initstr(200, 3) . // Obligatoire CODE_ENTETE Ligne de description structurée de l'identité + initstr($a['SourceId'], 10 , '0', ALIGN_RIGHT) . // Obligatoire ID Numéro unique d'identification interne d'un établissement S&D + initstr($siren, 9 , '0', ALIGN_RIGHT) . // Obligatoire SIREN Siren de l'entreprise + initstr($nic, 5 , '0', ALIGN_RIGHT) . // Obligatoire NIC Nic de l'établissement + initstr($a['Source'], 3 , '0', ALIGN_RIGHT) . // Obligatoire SOURCE Source de la fiche d'identité + initstr($iInsee->valideSiren($siren,$nic), 1 , '0', ALIGN_RIGHT) . // Obligatoire SIRETVALIDE Siren/siret valide + initstr($a['numRC'], 10 ) . // Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés + initstr($a['Tribunal'], 6 ) . // Facultatif TRIBUNAL Identifiant du Tribunal + initstr(str_replace('-','',$a['dateMajIdentite']), 8 , '0', ALIGN_RIGHT) . // Obligatoire DATEMAJ Date de la dernière mise à jour dans la base S&D + initstr($a['Actif'], 1 , '0', ALIGN_RIGHT) . // Obligatoire ACTIF Établissement juridiquement actif + initstr($a['ActifEco'], 1 , '0', ALIGN_RIGHT) . // Obligatoire ACTIFECO Établissement économiquement actif + initstr($a['SituationJuridique'], 2 ) . // Obligatoire SITJUR Situation Juridique de l'entreprise + initstr($ev_EVE, 3 ) . // Facultatif EVE Dernier événement Insee recensé + initstr(str_replace('-','',$a['DateMajINSEE']), 8 , '0', ALIGN_RIGHT) . // Facultatif DATEVE Date du dernier événement Insee recensé + initstr($ev_TYPETAB, 2 ) . // Facultatif TYPETAB Type d'établissement concerné par l'événement + initstr($a['Siege'], 1 , '0', ALIGN_RIGHT) . // Obligatoire SIEGE Établissement siège, secondaire ou principal + initstr($a['Nom'], 160 ) . // Obligatoire NOM Raison Sociale + initstr($a['NomCommercial'], 160 ) . // Facultatif NOMCOM Nom commercial + initstr($a['Enseigne'], 80 ) . // Facultatif ENSEIGNE Enseigne de l'établissement + initstr($a['Sigle'], 40 ) . // Facultatif SIGLE sigle de l'entreprise + initstr($a['AdresseNum'], 4 , '0', ALIGN_RIGHT) . // Facultatif ADR_NUMVOIE Numéro dans la voie + initstr($a['AdresseBtq'], 1 ) . // Facultatif ADR_BTQ Indicateur de répétition (Bis, Ter, etc...) + initstr($a['AdresseVoie'], 4 ) . // Facultatif ADR_TYPVOIE Type de voie + initstr($a['AdresseRue'], 32 ) . // Obligatoire ADR_LIBVOIE Libellé de la voie + initstr($a['Ville'], 32 ) . // Obligatoire ADR_LIBCOM Commune + initstr($a['CP'], 5 , '0', ALIGN_RIGHT) . // Obligatoire ADR_CP Code postal + initstr($a['Adresse2'], 38 ) . // Facultatif ADR_COMP Complément d'adresse + initstr('', 38 ) . // Facultatif ADR_DISTSP Distribution spéciale + initstr($a['Pays'], 38 ) . // Facultatif PAYS Pays + initstr($a['PaysIso2'], 2 ) . // Facultatif PAYSISO2 Code Pays au format ISO2 + initstr($a['Dept'], 2 ) . // Obligatoire ADR_DEP Département de l'établissement + initstr($a['codeCommune'], 3 , '0', ALIGN_RIGHT) . // Obligatoire ADR_COM Code commune de l'établissement + initstr(str_replace(' ','',$a['Rivoli']), 5 ) . // Facultatif CODEVOIE Code voie de l'établissement + initstr($a['codIris'], 4 ) . // Facultatif CODEIRIS Code Iris de l'établissement + initstr('', 5 ) . // Facultatif CODEILOT Code Ilot de l'établissement + initstr($a['AdresseDom'], 1 , '0', ALIGN_RIGHT) . // Facultatif ADRESSEDOM Indicateur d'adresse de domiciliation + initstr($a['Tel'], 15 ) . // Facultatif TEL Numéro de téléphone + initstr($a['Fax'], 15 ) . // Facultatif FAX Numéro de télécopie + initstr($a['Web'], 80 ) . // Facultatif WEB Site Web + initstr($a['Mail'], 80 ) . // Facultatif MAIL Adresse Email de contact générique + initstr($a['Auxiliaire'], 1 , '0', ALIGN_RIGHT) . // Facultatif AUXILT Auxiliarité de l'activité de l'établissement + initstr($a['Saisonnalite'], 1 , '0', ALIGN_RIGHT) . // Facultatif SAISONAT Saisonnalité de l'établissement + initstr($a['NatureActivite'], 2 , '0', ALIGN_RIGHT) . // Facultatif ACTIVNAT Nature de l'activité de l'établissement + initstr($a['OrigineCreation'], 2 ) . // Facultatif ORIGINE Origine de la création de l'établissement + initstr($a['TypeExploitation'], 2 , '0', ALIGN_RIGHT) . // Facultatif TYPEXPLOIT Type d'exploitation + initstr($a['LIEUACT'], 2 , '0', ALIGN_RIGHT) . // Facultatif LIEUACT Lieu de l'activité de l'établissement + initstr($a['ACTISURF'], 2 , '0', ALIGN_RIGHT) . // Facultatif ACTISURF Type de magasin + initstr($a['PRODPART'], 1 , '0', ALIGN_RIGHT) . // Facultatif PRODPART Participation particulière à la production de l'établissement + initstr($b['insARRONET'], 2 , '0', ALIGN_RIGHT) . // Facultatif ARRONET Arrondissement de l'établissement + initstr($b['insCTONET'], 3 , '0', ALIGN_RIGHT) . // Facultatif CTONET Canton + initstr($b['insTCD'], 2 , '0', ALIGN_RIGHT) . // Facultatif TCD Tranche de commune détaillée + initstr($b['insZEMET'], 2 , '0', ALIGN_RIGHT) . // Facultatif ZEMET Zone d'emploi + initstr($b['insDU'], 2 ) . // Facultatif DU Département de l'unité urbaine de localisation + initstr($b['insTU'], 1 ) . // Facultatif TU Taille de l'unité urbaine + initstr($b['insUU'], 2 ) . // Facultatif UU Numéro de l'untié urbaine + initstr(str_replace('-','',$a['DateCreaEt']), 8 , '0', ALIGN_RIGHT) . // Facultatif DCRET Date de création de l'établissement + initstr($a['NafEtab'], 5 ) . // Obligatoire APE_ETAB Code activité dans la NAF rév2 de l'établissement + initstr($a['NaceEtab'], 5 ) . // Facultatif NACE_ETAB Code activité NACE de l'établissement + + initstr(0, 4 , '0', ALIGN_RIGHT) . // Facultatif DAPET Année de validité de l'activité principale de l'établissement + + initstr($a['EffectifEtab'], 7 , '0', ALIGN_RIGHT) . // Facultatif EFF_ET Effectif de l'établissement + initstr($a['EffEtTr'], 2 ) . // Facultatif TEFF_ET Tranche d'effectif de l'établissement + initstr($a['AnneeEffEt'], 4 , '0', ALIGN_RIGHT) . // Facultatif DEFET Année de mise à jour de l'effectif établissement + + initstr('', 1 ) . // Facultatif MODET Modalité de l'activité pricipale de l'établissement + + initstr($a['EXPLET'], 1 ) . // Facultatif EXPLET Etablissement exploitant tout ou partie des moyens de production + initstr($b['insRPET'], 2 , '0', ALIGN_RIGHT) . // Facultatif RPET Région de localisation de l'établissement + + initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . // Facultatif DREACTET Date de réactivation de l'établissement + initstr(str_replace('-','',0), 8 , '0', ALIGN_RIGHT) . // Facultatif DATEFERET Date de fermeture de l'établissement + + initstr($b['insEAEANT'], 4 , '0', ALIGN_RIGHT) . // Facultatif EAEANT Année de validité des rubriques de niveau Etab provenant des EAE* + initstr($b['insEAEAPET'], 5 ) . // Facultatif EAEAPET Activité principale de l'établissement issue des EAE + initstr($b['insEAESEC1T'], 5 ) . // Facultatif EAESEC1T Activité secondaire de l'établissement issue des EAE + initstr($b['insEAESEC2T'], 5 ) . // Facultatif EAESEC2T Autre activité secondaire de l'établissement issue des EAE + initstr(str_replace('-','',$a['DateCreaEn']), 8 , '0', ALIGN_RIGHT) . // Facultatif DCREN Date de création de l'entreprise + initstr($a['NafEnt'], 5 ) . // Obligatoire APE_ENT Code activité dans la NAF rév2 de l'entreprise + initstr($a['NaceEnt'], 5 ) . // Facultatif NACE_ENT Code activité NACE de l'entreprise + + initstr(0, 4 , '0', ALIGN_RIGHT) . // Facultatif DAPEN Année de validité de l'activité principale de l'entreprise + + initstr($a['Effectif'], 7 , '0', ALIGN_RIGHT) . // Facultatif EFF_ENT Effectif de l'entreprise + initstr($a['EffEnTr'], 2 ) . // Facultatif TEFF_ENT Tranche d'effectif de l'entreprise + initstr($a['AnneeEffEn'], 4 , '0', ALIGN_RIGHT) . // Facultatif DEFEN Année de mise à jour de l'effectif entreprise + initstr($a['MODEN'], 1 ) . // Facultatif MODEN Modalité de l'activité pricipale de l'entreprise + initstr($a['EXPLEN'], 1 ) . // Facultatif EXPLEN Entreprise exploitant tout ou partie des moyens de production + initstr($b['insRPEN'], 2 , '0', ALIGN_RIGHT) . // Facultatif RPEN Région de localisation du siège de l'entreprise + initstr(str_replace('-','',$ev_DREACTEN), 8 , '0', ALIGN_RIGHT) . // Facultatif DREACTEN Date de réactivation de l'entreprise + initstr(str_replace('-','',$ev_DATEFEREN), 8 , '0', ALIGN_RIGHT) . // Facultatif DATEFEREN Date de fermeture de l'entreprise + initstr(str_replace('-','',$a['dateImmat']),8 , '0', ALIGN_RIGHT) . // Facultatif DATEIMMAT Date d'immatriculation de l'entreprise au RCS + initstr(str_replace('-','',$a['dateRad']), 8 , '0', ALIGN_RIGHT) . // Facultatif DATERAD Date de radiation de l'entreprise du RCS + initstr($a['Capital'], 15 , '0', ALIGN_RIGHT) . // Facultatif CAPITAL Montant du capital de l'entreprise + initstr($a['CapitalType'], 1 ) . // Facultatif CAPITALTYPE Type de capital + initstr($a['CapitalDev'], 3 ) . // Facultatif CAPITALDEV Devise du capital + initstr($a['FJ'], 4 , '0', ALIGN_RIGHT) . // Obligatoire CJ Catégorie Juridique de l'entreprise + initstr($a['Civilite'], 1 , '0', ALIGN_RIGHT) . // Facultatif CIVILITE Civilité de l'entreprise si Personne Physique + initstr($a['NbEtab'], 4 , '0', ALIGN_RIGHT) . // Facultatif NBETAB Nombre d'établissements actifs de l'entreprise + initstr($a['TrancheCA'], 1 , '0', ALIGN_RIGHT) . // Facultatif TCA Tranche de chiffre d'affaire + + initstr($a['TrancheCAexp'], 1 , '0', ALIGN_RIGHT) . // Facultatif TCAEXP Tranche de chiffre d'affaire à l'export + initstr($a['APRM'], 6 ) . // Facultatif APRM Activité principale au registre des métiers + initstr($a['MONOREG'], 1 , '0', ALIGN_RIGHT) . // Facultatif MONOREG Mono-régionalité de l'entreprise + initstr($a['REGIMP'], 2 , '0', ALIGN_RIGHT) . // Facultatif REGIMP Principale région d'implantation de l'entreprise + initstr($a['MONOACT'], 1 , '0', ALIGN_RIGHT) . // Facultatif MONOACT Mono-activité de l'entreprise + initstr(substr($a['SiretSiege'],-5), 5 , '0', ALIGN_RIGHT) . // Facultatif NICSIEGE Nic de l'établissement siège + initstr($a['RECME'], 1 , '0', ALIGN_RIGHT) . // Facultatif RECME Répertoire des Entreprises Contrôlées Majoritairement par l'État + initstr($ev_SIRETLIE, 14 , '0', ALIGN_RIGHT) . // Facultatif SIRETLIE Siret lié : prédécesseur, successeur, doublon, autre + initstr($ev_SIRETLIETYPE, 1) . // Facultatif SIRETLIETYPE Type de sitet lié + initstr($a['AutreSiret']['pre']['nic'], 5 , '0', ALIGN_RIGHT) . // Facultatif NICPREC Nic de l'établissement prédécesseur (dans le cadre d'un transfert) + initstr($a['AutreSiret']['suc']['nic'], 5 , '0', ALIGN_RIGHT) . // Facultatif NICSUIV Nic de l'établissement successeur (dans le cadre d'un transfert) + initstr($ev_DESTINAT, 2 ) . // Facultatif insDESTINAT Destination Insee + initstr($b['insDEPCOMEN'], 5 , '0', ALIGN_RIGHT) . // Facultatif insDEPCOMEN Code commune Insee du siège de l'entreprise + initstr($ev_MNICSIEGE, 1 , '0', ALIGN_RIGHT) . // Facultatif insMNICSIEGE Indicateur de MAJ du NIC SIEGE + initstr($ev_MNOMEN, 1 , '0', ALIGN_RIGHT) . // Facultatif insMNOMEN Indicateur de MAJ de la Raison Sociale + initstr($ev_MCJ, 1 , '0', ALIGN_RIGHT) . // Facultatif insMCJ Indicateur de MAJ de la Forme Juridique + initstr($ev_MAPEN, 1 , '0', ALIGN_RIGHT) . // Facultatif insMAPEN Indicateur de MAJ du NAF entreprise + initstr($ev_MENSEIGNE, 1 , '0', ALIGN_RIGHT) . // Facultatif insMENSEIGNE Indicateur de MAJ de l'ENSEIGNE + initstr($ev_MAPET, 1 , '0', ALIGN_RIGHT) . // Facultatif insMAPET Indicateur de MAJ du NAF établissement + initstr($ev_MADRESSE, 1 , '0', ALIGN_RIGHT) . // Facultatif insMADRESSE Indicateur de MAJ de l'ADRESSE de l'établissement + initstr($ev_MAUXILT, 1 , '0', ALIGN_RIGHT) . // Facultatif insMAUXILT Indicateur de MAJ de l'AUXILIARITE + initstr($ev_MSIGLE, 1 , '0', ALIGN_RIGHT) . // Facultatif insMSIGLE Indicateur de MAJ du SIGLE + initstr($ev_MEXPLEN, 1 , '0', ALIGN_RIGHT) . // Facultatif insMEXPLEN Indicateur de MAJ du caractère EXPLOITANT entrep + initstr($ev_MEXPLET, 1 , '0', ALIGN_RIGHT) . // Facultatif insMEXPLET Indicateur de MAJ du caractère EXPLOITANT étab + initstr($codeRnvp, 1 , '0', ALIGN_RIGHT) . // Facultatif ADR_RNVP Type de Prestation RNVP si RNVP + initstr($L1rnvp, 38 ) . // Facultatif L1_nomen Ligne 1 : Nom de l'entreprise + initstr($L2rnvp, 38 ) . // Facultatif L2_COMP Ligne 2 : Complément de nom + initstr($L3rnvp, 38 ) . // Facultatif L3_CADR Ligne 3 : Complément d'adresse + initstr($L4rnvp, 38 ) . // Facultatif L4_VOIE Ligne 4 : Adresse + initstr($L5rnvp, 38 ) . // Facultatif L5_DISP Ligne 5 : Distribution spéciale + initstr($L6rnvp, 38 ) . // Facultatif L6_POST Ligne 6 : Code Postal, commune, etc.. + initstr($L7rnvp, 38 ) . + initstr($b['insEAEANN'], 4 , '0', ALIGN_RIGHT) . // Facultatif EAEANN Année de validité des rubriques de niveau ENTREP provenant des EAE* + initstr($b['insEAEAPEN'], 5 ) . // Facultatif EAEAPEN Activité principale de l'entreprise issue des EAE + initstr($b['insEAESEC1N'], 5 ) . // Facultatif inseaesec1n Activité secondaire n°1 de l'entreprise issue des EAE + initstr($b['insEAESEC2N'], 5 ) . // Facultatif inseaesec2n Activité secondaire n°2 de l'entreprise issue des EAE + initstr($b['insEAESEC3N'], 5 ) . // Facultatif inseaesec3n Activité secondaire n°3 de l'entreprise issue des EAE + initstr($b['insEAESEC4N'], 5 ) . // Facultatif inseaesec4n Activité secondaire n°4 de l'entreprise issue des EAE + initstr($a['GeoLat'], 12 , ' ', ALIGN_RIGHT) . // Facultatif GPSX Latitude en ° et décimales de ° (format WGS1984) + initstr($a['GeoLon'], 12 , ' ', ALIGN_RIGHT) . // Facultatif GPSY Longitude en ° et décimales de ° (format WGS1984) + initstr($a['GeoPrecis'], 1 , '0', ALIGN_RIGHT) . // Facultatif GPSP Niveau de précision du géocodage + initstr($a['GeoInfos']['NZUS'], 10 ) . // Facultatif ZUS Identifiant de la Zone Urbaine Sensible + initstr($a['GeoInfos']['NZRU'], 10 ) . // Facultatif ZRU Identifiant de la Zone de Rénovation Urbaine + initstr($a['GeoInfos']['NZFU'], 10 ) . // Facultatif ZFU Identifiant de la Zone Franche Urbaine + initstr($a['GeoInfos']['NCUCS'],10 ) . // Facultatif CUCS Identifiant de la Zone Contrat Urbain de Cohésion Social + initstr($a['GeoInfos']['NAFR'], 10 ) . // Facultatif AFR Identifiant de la Zone AFR + initstr($a['GeoInfos']['NZRR'], 10 ) . // Facultatif ZRR Identifiant de la ZRR + initstr($a['TvaNumero'], 15 ) . // Facultatif TVA Numéro de TVA Intracommunataire + initstr($a['TvaAttribue'], 1 , '0', ALIGN_RIGHT) . // Facultatif TVAVALIDE Numéro de TVA validé + initstr($a['AncienSiege'], 1 , '0', ALIGN_RIGHT) . // Facultatif ANCIENSIEGE Ancien siège + initstr($a['Isin'], 12 ) . // Facultatif CODEISIN Code ISIN de l'entreprise si cotation en bourse + initstr($a['dir1Nom'], 40 ) . // Facultatif PPDIR1NOM Nom du principal dirigeant + + initstr(preg_replace('/,?\s.*$/','',$a['dir1Prenom']), 30 ) . // Facultatif PPDIR1PRENOM Prénom du principal dirigeant + //initstr($a['dir1Prenom'], 30 ) . // Facultatif PPDIR1PRENOM Prénom du principal dirigeant + initstr($a['dir1NomUsage'], 40 ) . // Facultatif PPDIR1NNAISS Nom de naissance du ppl dirigeant + initstr(str_replace('-','',$a['dir1DateNaiss']), 8 , '0', ALIGN_RIGHT).// Facultatif PPDIR1DNAISS Date de naissance + initstr($a['dir1LieuNaiss'], 35 ) . // Facultatif PPDIR1LNAISS Lieu de Naissance + initstr($a['dir1Code'], 4 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1FONC Code Fonction + initstr(str_replace('-','',$a['dir1DateFct']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR1MAJ Date de MAJ du ppl dirigeant + initstr($a['dir2Nom'], 40 ) . // Facultatif PPDIR2NOM Nom du seconde principal dirigeant + + initstr(preg_replace('/,?\s.*$/','',$a['dir2Prenom']), 30 ) . // Facultatif PPDIR2PRENOM Prénom du 2ème principal dirigeant + //initstr($a['dir2Prenom'], 30 ) . // Facultatif PPDIR2PRENOM Prénom du 2ème principal dirigeant + initstr($a['dir2NomUsage'], 40 ) . // Facultatif PPDIR2NNAISS Nom de naissance du 2ème ppl dirigeant + initstr(str_replace('-','',$a['dir2DateNaiss']), 8 , '0', ALIGN_RIGHT).// Facultatif PPDIR2DNAISS Date de naissance du 2ème ppl dirigeant + initstr($a['dir2LieuNaiss'], 35 ) . // Facultatif PPDIR2LNAISS Lieu de Naissance du 2ème ppl dirigeant + initstr($a['dir2Code'], 4 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2FONC Code Fonction du 2ème ppl dirigeant + initstr(str_replace('-','',$a['dir2DateFct']), 8 , '0', ALIGN_RIGHT) . // Facultatif PPDIR2MAJ Date de MAJ du 2ème ppl dirigeant + initstr(str_replace('-','',$a['bilanDate']), 8 , '0', ALIGN_RIGHT) . // Facultatif BILANCLOT Date de dernière clôture de bilan disponible + initstr($a['bilanMois'], 2 , '0', ALIGN_RIGHT) . // Facultatif BILANDUREE Durée du dernier exercice disponible + initstr($tcaSEDmt, 15 , '0', ALIGN_RIGHT) . // Facultatif BILANCA Chiffre d'affaires au dernier bilan disponible + initstr($a['bilanHN'], 15 , '0', ALIGN_RIGHT) . // Facultatif BILANRES Résultat au dernier bilan disponible + initstr($tcaSED, 1 ) . // Tranche de CA SED + initstr($tcaSEDtype, 1 ) . // Type de tranche de CA : (R)éel, (I)nconnu ou (E)stimé + initstr($tcaSEDannee, 4 ) . // Année du CA + initstr($a['dir1Genre'], 1 ) . // PPDIR1 Genre + initstr($a['dir2Genre'], 1 ) . // PPDIR2 Genre + initstr($a['IND_PUBLIPO']*1, 1 ) . // Indicateur du champ de publipostage + initstr(' ', 32 ) ; // Facultatif FILLER1 Zone libre + +/* + AnneeTCA + CapitalNbActions + CapitalMtActions +*/ + fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE).$optionEOL); + $nbLignes++; + $nbLignes200++; + @$tabNbLignes[200]++; + + $mBil=new MBilans($siren); + $tabBilans=@$mBil->listeBilans(); + $iBil=0; + if ($nbBilansMax>0) { + foreach ($tabBilans as $idxBilan=>$derBilan) { + $iBil++; + /*if (count($tabBilans)>0) { + print_r($tabBilans); + die(); + } + $derBilan=current($tabBilans);*/ + $t5=microtime(1); + $p=@$mBil->getBilan(WDate::dateT('Ymd','d/m/Y',$derBilan['dateExercice']), $derBilan['typeBilan']); + $t6=microtime(1); + @$tTime['Bilan']+=$t6-$t5; + + //print_r($p); + if ($p['CONSOLIDE']=='S') $numLiasse='2033'; + else $numLiasse='2050'; + $unite=strtoupper($p['MONNAIE_LIV_UNITE']); + if ($unite=='') $unite='U'; + @$tabNbLignes[$typeLigneBilan]++; + $nbLignesBil++; + $strIni=initstr($typeLigneBilan, 3) . // Obligatoire CODE_ENTETE Ligne de description structurée de l'identité + initstr($a['SourceId'], 10 , '0', ALIGN_RIGHT) . // Obligatoire ID Numéro unique d'identification interne d'un établissement S&D + initstr($siren, 9 , '0', ALIGN_RIGHT) . // Obligatoire SIREN Siren de l'entreprise + initstr($nic, 5 , '0', ALIGN_RIGHT) . // Obligatoire NIC Nic de l'établissement + initstr($a['Source'], 3 , '0', ALIGN_RIGHT) . // Obligatoire SOURCE Source de la fiche d'identité + initstr($iInsee->valideSiren($siren,$nic), 1 , '0', ALIGN_RIGHT) . // Obligatoire SIRETVALIDE Siren/siret valide + initstr($a['numRC'], 10 ) . // Facultatif NUMRCS Numéro de Registre du Commerce et des Sociétés + initstr($a['Tribunal'], 6 ) . // Facultatif TRIBUNAL Identifiant du Tribunal + initstr(str_replace('-','',$p['DATE_FRAICHE_BILAN']), 8, '0', ALIGN_RIGHT) . // DATEMAJ Date de la dernière mise à jour du bilan dans la base S&D Format AAAAMMJJ + initstr(substr($p['DATE_FRAICHE_BILAN'],0,4), 4, '0', ALIGN_RIGHT) . // MILLESIME Année du bilan + initstr(str_replace('-','',$p['DATE_CLOTURE']), 8, '0', ALIGN_RIGHT) . // BILAN_DATE Date de clôture du bilan Format AAAAMMJJ + initstr($p['DUREE_MOIS'], 2, '0', ALIGN_RIGHT) . // BILAN_DUREE Durée de l'exercice en mois + initstr(str_replace('-','',$p['DATE_CLOTURE_PRE']), 8, '0', ALIGN_RIGHT) . // BILAN_DATEP Date de clôture du bilan précédent Format AAAAMMJJ + initstr($p['DUREE_MOIS_PRE'], 2, '0', ALIGN_RIGHT) . // BILAN_DUREEP Durée de l'exercice précédent en mois + initstr($numLiasse,4) . // BILAN_LIASSE Numéro de la première liasse du bilan 2033,2050 + initstr($p['CONSOLIDE'], 1) . // BILAN_TYPE Type de bilan S=Réel Normal Simplifié, C=Consolidé, N=Réel Normal + initstr($p['MONNAIE'], 3) . // BILAN_MONNAIE Code devise de livraison selon la norme ISO 4217 (3 lettres) + initstr($p['MONNAIE_ORI'], 3) . // BILAN_MONNAIEO Code devise d'origine du bilan selon la norme ISO 4217* + initstr($unite, 1); // BILAN_UNITE Unité du bilan livré U=en unité de devise, K=en milliers, M=en millions + unset($p['SIREN']); + unset($p['SOURCE']); + unset($p['devise']); + unset($p['DATE_FRAICHE_BILAN']); + unset($p['DATE_CLOTURE']); + unset($p['DATE_CLOTURE_PRE']); + unset($p['DUREE_MOIS']); + unset($p['DUREE_MOIS_PRE']); + unset($p['MONNAIE']); + unset($p['CONSOLIDE']); + unset($p['MONNAIE_ORI']); + unset($p['MONNAIE_LIV_UNITE']); + $strIni.=initstr(count($p), 4, '0', ALIGN_RIGHT); // BILAN_NBPOSTES Nombre de postes livrés + $nbP=0;$strP=''; + if ($typeLigneBilan==400) { + foreach ($p as $code=>$valeur) { + $nbP++; + if ($valeur>=0) $signe='+'; + else $signe='-'; + $strP.= initstr($code, 4).$signe.initstr(abs($valeur), 20, '0', ALIGN_RIGHT); + if($nbP<76) continue; + fwrite($fp, initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$optionEOL); + $nbLignes++; + $nbLignesBil++; + $nbP=0;$strP=''; + } + if($nbP<76) { // Ecriture de la dernière ligne sauf s'il y a dejà 76 postes + fwrite($fp, initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$optionEOL); + $nbLignes++; + $nbLignesBil++; + } + } else { + $uniteMultiple=1; + switch (strtoupper($unite)) { + case 'K': $uniteMultiple=1000; break; + case 'M': $uniteMultiple=1000000; break; + } + if ($p['CONSOLIDE']=='S') $tabPostes=@$iBilan->bilanSimplifie2Normal($p); + else $tabPostes=$p; + + // Chiffre d'affaires - Poste FL au format 2050 + $strP.= @exporteRatio($p['FL']); + // Chiffre d'affaires Export - Poste FK + $strP.= @exporteRatio($p['FK']); + // Valeur Ajoutée - R130 = FL + FM+FN - (FS+FU) - (FT+FV) - (FW-HP-HQ) + $va=$p['FL'] + $p['FM'] + $p['FN'] - ($p['FS'] + $p['FU']) - ($p['FT'] + $p['FV']) - ($p['FW']-$p['HP']-$p['HQ']); + $strP.= @exporteRatio($va); + // Masse salariale - R132 = FY + FZ + $ms=$p['FY'] + $p['FZ']; + $strP.= @exporteRatio($ms); + // EBE - R140 = R130-R132 - FX + FO + $strP.= @exporteRatio($va-$ms - $p['FX'] + $p['FO']); + // Personnel extérieur à l'entreprise, Intérim = Poste YU + $strP.= @exporteRatio($p['YU']); + // Sous-traitance + $strP.= @exporteRatio($p['YT']); + // Effectif + $strP.= @exporteRatio($p['YP']); + // Capital - Poste DA + $strP.= @exporteRatio($p['DA']); + // Montant des Immo. Corp. Terrains Brut Poste AN + $strP.= @exporteRatio($p['AN']); + // Montant des Immo. Corp. Constructions Poste AP + $strP.= @exporteRatio($p['AP']); + // Montant des Installations Techniques, matériel et outillage industriels Poste AR + $strP.= @exporteRatio($p['AR']); + // Montant des Immo. Corp. Brut =AN+AP+AR+AT+AV+AX + $strP.= @exporteRatio($p['AN'] + $p['AP'] + $p['AR'] + $p['AT'] + $p['AV'] + $p['AX']); + // Montant des Immo. Corp. Net =AN-AO + AP-AQ + AR-AS + AT-AU + AV-AW + AX-AY + $strP.= @exporteRatio($p['AN']-$p['AO'] + $p['AP']-$p['AQ'] + $p['AR']-$p['AS'] + $p['AT']-$p['AU'] + $p['AV']-$p['AW'] + $p['AX']-$p['AY']); + // Montant des Immo. Incorp. Brut =AB+AD+AF+AH+AJ+AL + $strP.= @exporteRatio($p['AB'] + $p['AD'] + $p['AF'] + $p['AH'] + $p['AJ'] + $p['AL']); + // Montant des Immo. Incorp. Net =AB-AC + AD-AE + AF-AG + AH-AI + AJ-AK + AL-AM + $strP.= @exporteRatio($p['AB']-$p['AC'] + $p['AD']-$p['AE'] + $p['AF']-$p['AG'] + $p['AH']-$p['AI'] + $p['AJ']-$p['AK'] + $p['AL']-$p['AM']); + // Montant des Taxe professionnelle Poste YW + $strP.= @exporteRatio($p['YW']); + + fwrite($fp, initstr($strIni.$strP,LONGUEUR_LIGNE_SORTIE).$optionEOL); + $nbLignes++; + $nbLignesBil++; + $strP=''; + } + if ($iBil==$nbBilansMax) break; + } + //die(); + } + if ($nbLignes200%100==0 || $nbLignes%100==0) echo date ('Y/m/d - H:i:s')." - Entité $nbLignes200/$nbEtab - Siret $siren $nic - $nbLignes lignes ($nbLignes200 identités, $nbLignesBil bilans)\n"; + } + + /** + ** On génère la ligne de fin de fichier + **/ + $nbLignes++; + $dateFin=date('YmdHis'); + $str= initstr('999', 3, '0', ALIGN_RIGHT) . // Type de ligne + initstr($dateFin, 14) . // Date & Heure de fin génération du fichier + initstr($clientNumTourFichier, 10, '0', ALIGN_RIGHT) . // Numéro de tour du fichier pour le client + initstr($clientIdentifiant, 36) . // Identifiant Client + initstr($typePrestaton, 32) . // Type de prestation + initstr($nbLignes, 10, '0', ALIGN_RIGHT) . // Nombre de lignes Total du fichier + ''; + fwrite($fp, initstr($str,LONGUEUR_LIGNE_SORTIE)); // Pas de fin de ligne sur la dernière ligne + fclose($fp);; + $tabProduction[$idClient]['dateFin']=$dateFin; + $duree=round(microtime(true)-$timeDeb,3); + $dureeD=floor($duree/86400); + $reste=$duree%86400; + $dureeH=floor($reste/3600); + $reste=$reste%3600; + $dureeM=floor($reste/60); + $dureeS=$reste%60; + + $tabProduction[$idClient]['duree']=$duree.' secondes'; + if ($dureeD==0 && $dureeH==0) $tabProduction[$idClient]['dureeLisible']="$dureeM m. $dureeS s."; + elseif ($dureeD==0) $tabProduction[$idClient]['dureeLisible']="$dureeH h. $dureeM m. $dureeS s."; + else $tabProduction[$idClient]['dureeLisible']="$dureeD j. $dureeH h. $dureeM m. $dureeS s."; + $tabProduction[$idClient]['nbLignes']=$nbLignes; + + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Fichier client terminé.".EOL; + + /** Envoi du fichier produit par mail + **/ + if (isset($tabPresta['mailTo'])) { + $tabAttached=array(REP_TEMP.$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt'); + $messageInfo="Bonjour, + + Veuillez trouver le fichier d'établissements Scores & Décisions relatifs à votre abonnement. + + Bien Cordialement, + Le service Support. + + + ATTENTION : Cet email est un message automatique. Merci de ne pas y répondre. Pour toute question nous vous invitons à contacter notre support à l'adresse support@scores-decisions.com. + + --- + + SCORES & DECISIONS + Service support + 1, rue de Clairefontaine - 78120 RAMBOUILLET + tél : 33 (0)1 75 43 80 10 + fax : 33 (0)1 75 43 85 74 + support@scores-decisions.com + http://www.scores-decisions.com/ + Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises + + Pensez à l'environnement avant d'imprimer ce message ! + Save paper - think before you print"; + + if ($envoyerMail) { + if (@$tabPresta['mailTo']<>'') $mailTo=@$tabPresta['mailTo'].',suivi@scores-decisions.com'; + else $mailTo='suivi@scores-decisions.com'; + if(@sendMail('production@scores-decisions.com', $mailTo, "Diffusion A6CMO S&D", $messageInfo, '', $tabAttached)) + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Fichier envoyé à ".$tabPresta['mailTo'].EOL; + else + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Erreur lors de l'envoi du fichier à ".$tabPresta['mailTo'].EOL; + } + } + + if (!copy(REP_TEMP.$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt',CLIENTS_PATH.'a6cmo/'.$typePrestaton.'_'.$clientIdentifiant.'_'.DATETIME.'.txt')) + echo date ('Y/m/d - H:i:s')." - ERREUR : Copie du fichier dans A6CMO impossible !".EOL; + else + echo date ('Y/m/d - H:i:s')." - Prestation n°$numPrestation, Client $nomClient : Fichier disponible dans A6CMO.".EOL; + +} + +/* +-s Génération du stock +-d=SSAAMMJ(JHHIISS) Diffusion depuis le SSAAMMJJ ou SSAAMMJJHHIISS +-c=XXX N° de client/prestation +-l Liste des clients/prestations +-v Verbosité maximum +-m Ne pas envoyer d'email + + case 's': $stock=true; break; + case 'v': $debug=true; break; + case 'd': $dateDebutCmd=strtr(substr($argv[$i],3),array('-'=>'',':'=>''))*1; break; + case 'c': $idClientTodo=substr($argv[$i],3); break; + case 'l': $listePresta=true; break; + case 'm': $envoyerMail=false; +*/ + + +if (!$listePresta) { + if ($idClientTodo) { + if ($stock) $strStock="du stock"; + else $strStock="hebdomadaire"; + $messageFinObj="Fin de la diffusion $strStock A6CMO pour $nomClientTodo ($numPrestationTodo)"; + $messageFinMsg=print_r($tabProduction, true); + } else { + if ($stock) $strStock="des stocks"; + else $strStock="des fichiers hebdos"; + $messageFinObj="FIN de la diffusion $strStock A6CMO"; + $messageFinMsg=print_r($tabProduction, true); + } + $messageFinMsg.=print_r($tTime, true); + sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', $messageFinObj, $messageFinMsg); +} + +die(); + +function exporteRatio($valeur) { + $signe='+'; + if($valeur<0) $signe='-'; + return ''.$signe.initstr(abs($valeur), 20, '0', ALIGN_RIGHT); +} + + ?> \ No newline at end of file diff --git a/bin/diffusionEntrepAdecco.php b/bin/diffusionEntrepAdecco.php new file mode 100644 index 00000000..bb116fac --- /dev/null +++ b/bin/diffusionEntrepAdecco.php @@ -0,0 +1,830 @@ +#!/usr/bin/php +"'",'&'=>'&', '²'=>'²', "\r"=>'', "\n"=>'', "\t"=>'')); + + if ($lon==-1) return $txt.$sep; + elseif ($sep=='') return sprintf("%-".$lon.'.'.$lon."s", $txt); + else return trim(sprintf("%-".$lon.'.'.$lon."s", $txt)).$sep; +} + +function choixAdr($bodEtab, $bodSiege, $insee) { + + if (strlen(trim($bodSiege))>0) $adr=trim($bodSiege); + elseif (strlen(trim($bodEtab))>0) $adr=trim($bodEtab); + else $adr=''; + + if (isset($insee) && trim($insee)<>'') return $insee; + else return $adr; +} + +include_once(FWK_PATH.'common/chiffres.php'); +include_once(FWK_PATH.'common/dates.php'); +include_once(INCLUDE_PATH.'partenaires/classMBilans.php'); +include_once(INCLUDE_PATH.'insee/classMInsee.php'); +include_once(INCLUDE_PATH.'scores/classMFinancier.php'); +include_once(INCLUDE_PATH.'scores/classMScores.php'); +include_once(FWK_PATH.'mail/sendMail.php'); +include_once(INCLUDE_PATH.'partenaires/classMLiens.php'); + +global $iDb2,$iDb3,$iLiens,$iBilan,$iInsee,$date; + +$iDb=new WDB('jo'); +$iDb2=new WDB('historiques'); +$iDb3=new WDB('tmp'); + +$iInsee=new MInsee(); +$iBilan=new MBilans(0); +$iLiens=new MLiens(0); + +$iCotation=new ICotation(array()); + +$presta=$purge=$siretReprise=$doFichierSiren=false; +$strReprise=''; +$date=date('Ymd'); +$tabFichier=array(); + +$nbSirValides=$nbSirInvalides=0; +$nbNicValides=$nbNicInvalides=0; +$nbInsert=0; + +$eff69=$dateDebut=$nafAMS=false; + +$strInfoScript='Usage : '.basename($argv[0]). " [OPTION] [Fichier à traiter ou Stock Adecco à charger] +Traitement des fichiers spécifiques Adecco. + +Options : + -1 Prestation 1 Mise à jour du stock Adecco + -2 Prestation 2 Ajout des établissements de + de 10 salariés absent du stock Adecco + -a=SSAAMMJJ Prestation 3A Créations mensuelles d'établissements de + de 10 salariés depuis le SSAAMMJJ + -b=SSAAMMJJ Prestation 3B Fermeture mensuelles d'établissements depuis le SSAAMMJJ + -c Prestation 3C Stock des liens groupes des établissements de + de 10 salariés + -p Purger la table addeco_out + -r=SIRET Reprendre au siret supérieur + -f Forcer le traitement même si on n'est pas vendredi (le traitement se lance entre le 4 et le 10 du mois) + -v Verbosité maximum + -m Traitement AMS + -6 Traitement des 6 à 9 salariés + -s Traitement du fichier de siren/siret en entrée + -t Traitement du stock Interim... +"; +$presta2=''; +$dayOfTheWeek=date('w'); + +$argv=$_SERVER['argv']; +if ($_SERVER['argc']>1) +{ + for ($i=1; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (strtolower(substr($argv[$i],1,1))) { + case '1': $presta=1; break; + case '2': $presta=2; break; + //case '3': $presta=3; break; + case '6': $eff69=true; $presta2='_69'; break; + case 'm': $nafAMS=true; $presta2='ams'; break; + case 'a': $presta=3.1; $dateDebut=substr($argv[$i],3); break; + case 'b': $presta=3.2; $dateDebut=substr($argv[$i],3); break; + case 'c': $presta=3.3; break; + case 'p': $purge=true; break; + case 'r': $siretReprise=substr($argv[$i],3); break; + case 's': $doFichierSiren=true; break; + case 't': $presta=3.11; break; + case 'f': $dayOfTheWeek=5; $mailTo='ylenaour@scores-decisions.com'; break; + case '-': + case '?': die($strInfoScript); break; + default: die('Option '. $argv[$i] . " inconnue !\n"); break; + } + } else $tabFichier[]=$argv[$i]; + } +} + +// Si pas de date de début alors on prend le 1er jour du mois précédent +if (!$dateDebut) $dateDebut=date('Ymd', mktime(0, 0, 0, date('m')-1, 1, date('Y'))); +$dateDebIniYmd=20111201; // Date de début de sdémarrage de la prestation Adecco +$dateDebYmd=substr($dateDebut,0,6).'01'; +$dateFinYmd=date('Ymt', mktime(0, 0, 0, substr($dateDebut,4,2), 1, substr($dateDebut,0,4))); +$mailTo='jproust@scores-decisions.com,ylenaour@scores-decisions.com,support@scores-decisions.com';//,fabienne.sourbier@adecco-groupe.fr,frederic.montagne@adecco-groupe.fr'; + +if (count($tabFichier)==1 && !$doFichierSiren) { + /* Chargement du fichier Entrant adecco */ + $nomFichier=$tabFichier[0]; + $fp=fopen($nomFichier, 'r'); + if (!$fp) { + echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier Adecco à 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, 4096)); + } + + echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier '$nomFichier' ($nbLignes lignes à traiter).".EOL; + + rewind($fp); + + /** Traitement de la 1ère ligne **/ + $ligne = trim(fgets($fp, 4096)); + if ($ligne<>'adREF|adSIREN|adNIC|adRAISON_SOCIALE|adADRESSE|adFILLER|adCP|adNAF2008|adTRANCHE_EFFECTIF|adCEDEX|adCODE_COMMUNE|adVILLE|adVILLE_CDX|ADSE') + die('Première ligne du flux Adecco innatendue !'.EOL); + $dateInsert=date('YmdHis'); + $nbLignesLues=1; + while (!feof($fp)) + { + $nbLignesLues++; + $a=array(); + $ligne = trim(fgets($fp, 4096)); + $tabEtab=explode('|', $ligne); + $a['adREF'] = $tabEtab[0]; + $a['adSIREN'] = $tabEtab[1]; + $a['adNIC'] = $tabEtab[2]; + $a['adRAISON_SOCIALE'] = $tabEtab[3]; + $a['adADRESSE'] = $tabEtab[4]; + $a['adFILLER'] = $tabEtab[5]; + $a['adCP'] = $tabEtab[6]; + $a['adNAF2008'] = $tabEtab[7]; + $a['adTRANCHE_EFFECTIF']= $tabEtab[8]; + $a['adCEDEX'] = $tabEtab[9]; + $a['adCODE_COMMUNE'] = $tabEtab[10]; + $a['adVILLE'] = $tabEtab[11]; + $a['adVILLE_CDX'] = $tabEtab[12]; + $a['ADSE'] = $tabEtab[13]; + if (!$iInsee->valideSiren($a['adSIREN'])) { + $a['sirenValide']=0; + $a['nicValide']=0; + $nbNicInvalides++; + $nbSirInvalides++; + } else { + $a['sirenValide']=1; + $nbSirValides++; + if (!$iInsee->valideSiren($a['adSIREN'], $a['adNIC'])) { + $a['nicValide']=0; + $nbNicInvalides++; + } else { + $a['nicValide']=1; + $nbNicValides++; + } + } + $a['siret']=''.$tabEtab[1].''.$tabEtab[2]; + if ($iDb3->insert('adecco_in', $a)) + $nbInsert++; + elseif (mysql_errno()<>1062) + die(mysql_error().EOL); + + } + echo date ('Y/m/d - H:i:s')." - Fin du traitement du fichier '$nomFichier' ($nbLignes/$nbLignesLues lignes traitées dont $nbInsert insérées).".EOL; +} elseif (count($tabFichier)==1 && $doFichierSiren) { + /* Chargement du fichier Entrant adecco */ + $nomFichier=$tabFichier[0]; + $fp=fopen($nomFichier, 'r'); + if (!$fp) { + echo date ('Y/m/d - H:i:s')." - Erreur : Impossible d'ouvrir le fichier Adecco à 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, 4096)); + } + + echo date ('Y/m/d - H:i:s')." - Début du traitement du fichier '$nomFichier' ($nbLignes lignes à traiter).".EOL; + + rewind($fp); + + /** Traitement de la 1ère ligne **/ + $ligne = trim(fgets($fp, 4096)); + if ($ligne<>'customer_id|TRADE_NAME|SIREN|NIC|Naf_code|ADDRESS_PART_1|ADDRESS_PART_2|code_commune|ville|CP|Cedex|\'SIRENNIC') + die('Première ligne du flux Adecco en entrée inattendue !'.EOL); + $dateInsert=date('YmdHis'); + $nbLignesLues=1; + + $nomFichier=REP_TEMP."adeccoGeoloc_$date.txt"; + $fp2=fopen($nomFichier,'w'); + + while (!feof($fp)) + { + $nbLignesLues++; + $a=array(); + $ligne = trim(fgets($fp, 4096)); + $tabEtab=explode('|', $ligne); + $a['adREF'] = $tabEtab[0]; + $a['adRAISON_SOCIALE'] = $tabEtab[1]; + $a['adSIREN'] = $tabEtab[2]; + $a['adNIC'] = $tabEtab[3]; + $a['adNAF2008'] = $tabEtab[4]; + $a['adADRESSE'] = $tabEtab[5]; + $a['adFILLER'] = $tabEtab[6]; + $a['adCODE_COMMUNE'] = $tabEtab[7]; + $a['adVILLE'] = $tabEtab[8]; + $a['adCP'] = $tabEtab[9]; +// $a['adTRANCHE_EFFECTIF']= $tabEtab[8]; + $a['adCEDEX'] = $tabEtab[10]; + $a['siret'] = str_replace("'",'',$tabEtab[11]); +// $a['adVILLE_CDX'] = $tabEtab[12]; +// $a['ADSE'] = $tabEtab[13]; + if (!$iInsee->valideSiren($a['adSIREN'])) { + $a['sirenValide']=0; + $a['nicValide']=0; + $nbNicInvalides++; + $nbSirInvalides++; + } else { + $a['sirenValide']=1; + $nbSirValides++; + if (!$iInsee->valideSiren($a['adSIREN'], $a['adNIC'])) { + $a['nicValide']=0; + $nbNicInvalides++; + } else { + $a['nicValide']=1; + $nbNicValides++; + } + } + if ($a['sirenValide']==1 && $a['nicValide']==1) { + if ($a['siret']<>$a['adSIREN'].''.$a['adNIC']) + $a['siret']=$a['adSIREN'].''.$a['adNIC']; + exporteAdecco($a['siret'],$a['adREF'],$fp2, $presta, $eff69, $nafAMS); + } + } + echo date ('Y/m/d - H:i:s')." - Fin du traitement du fichier '$nomFichier' ($nbLignes/$nbLignesLues lignes traitées dont $nbInsert insérées).".EOL; +} + + + +if ($dayOfTheWeek<>5) { + echo date('Y/m/d - H:i:s') ." - Nous ne sommes pas Vendredi !".EOL; + die(); +} + +if ($presta<>1 && $presta<>2 && $presta<>3.1 && $presta<>3.2 && $presta<>3.3 && $presta<>3.11) { + if (count($tabFichier)<>1) + echo date('Y/m/d - H:i:s') ." - Prestation '$presta' inconnue !".EOL; + die(); +} + +//$nomFichier=CLIENTS_PATH.'adecco/adecco'.$presta.$presta2."_$date.txt"; +$nomFichier=REP_TEMP.'adecco'.$presta.$presta2."_$date.txt"; +$fp=fopen($nomFichier,'w'); +// Ligne d'entête +if ($presta<>3.2 && $presta<>3.3) + fwrite($fp, "adSIREN|adNIC|adREF|adRAISON_SOCIALE|adADRESSE|adFILLER|adCP|adVILLE|adSE|SIREN|NIC|L1_NOMEN|L2_COMP|L3_CADR|L4_VOIE|L5_DISP|L6_POST|L7_ETRG|ZR1|RPET|DEPET|ARRONET|CTONET|COMET|LIBCOM|DU|TU|UU|CODPOS|ZR2|TCD|ZEMET|CODEVOIE|NUMVOIE|INDREP|TYPVOIE|LIBVOIE|ENSEIGNE|APET700|ZR3|SIEGE|TEFET|EFETCENT|ORIGINE|DCRET|MMINTRET|ACTIVNAT|LIEUACT|ACTISURF|SAISONAT|MODET|DAPET|DEFET|EXPLET|PRODPART|AUXILT|EAEANT|EAEAPET|EAESEC1T|EAESEC2T|NOMEN|SIGLE|CIVILITE|CJ|TEFEN|EFENCENT|APEN700|ZR4|APRM|TCA|RECME|DAPEN|DEFEN|DCREN|MMINTREN|MONOACT|MODEN|EXPLEN|EAEANN|EAEAPEN|EAESEC1N|EAESEC2N|EAESEC3N|EAESEC4N|NBETEXPL|TCAEXP|REGIMP|MONOREG|RPEN|DEPCOMEN|sdActif|sdEvenDate|sdEven|sdNomPrenomDir|sdYP|sdPctAct|sdSirenAct|sdNomAct|sdTel|LATITUDE|LONGITUDE|PRECIS".EOL); + +//exporteAdecco('32392385400059','ref',$fp, $presta,'','','','',''); +//die(); +if ($purge) { + //$iDb3->query('/*TRUNCATE TABLE adecco_out;*/'); +} +if ($presta==1) { + if ($siretReprise) $strReprise=" AND CONCAT(adSIREN,adNIC)>$siretReprise "; + //$nbRows=$iDb->select('tmp.adecco', 'REF, SIREN, NIC, siret, RAISON_SOCIALE, ADRESSE, FILLER, CP, VILLE', "nafet IN('7810Z', '7820Z', '7830Z')", true, MYSQL_ASSOC, true); + if ($eff69) $where="moinsDe10=1"; else $where='1'; + $nbRows=$iDb->select('tmp.adecco_in', + 'adRef AS REF, adSIREN AS SIREN, adNIC AS NIC, CONCAT(adSIREN,adNIC) AS siret, adRAISON_SOCIALE AS RAISON_SOCIALE, adADRESSE AS ADRESSE, adFILLER AS FILLER, adCP AS CP, adVILLE AS VILLE, ADSE/*CODE_COMMUNE, CEDEX*/', + "$where $strReprise ORDER BY adSIREN ASC, adNIC ASC", true, MYSQL_ASSOC, true); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL; + while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) { + exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69, $nafAMS, $tabTmp['RAISON_SOCIALE'], $tabTmp['ADRESSE'], $tabTmp['FILLER'], $tabTmp['CP'], $tabTmp['VILLE'], $tabTmp['ADSE']); + } + /** @toto Presta 1 : + - enregistrer chaque ligne fourni en bdd + - vérifier les fusions + */ +} elseif ($presta==3.1) { + $iDb->query('SELECT siretTrouve AS siret FROM tmp.adecco_out UNION SELECT siret FROM tmp.adecco_out;'); + echo mysql_error().EOL; + if (mysql_errno()>0) die(); + $tabSiret=array(); + while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) { + $tabSiret[]=$tabTmp['siret']; + } + $tabSiret=array_unique($tabSiret); + $nbRows=count($tabSiret); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siret Adecco uniques à exclure en Presta $presta...".EOL; + /** Les Créations d'étab>10 **/ + /*if ($eff69) $where10='AND (insEFENCENT>5 || insTEFET>2)'; + elseif($nafAMS) $where10="AND (insTEFET IN ('00','01','02') OR insEFENCENT BETWEEN 1 AND 5) AND insCJ BETWEEN 4000 AND 6999 + AND insAPET700 IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')"; + else $where10='AND (insEFENCENT>9 || insTEFET>10)';*/ + $where10="AND (insEFENCENT>5 OR insTEFET>2 OR ((insTEFET IN ('00','01','02') OR insEFENCENT BETWEEN 1 AND 5) AND insCJ BETWEEN 4000 AND 6999 + AND insAPET700 IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')))"; + + if ($siretReprise) $strReprise=" AND CONCAT(insSIREN, insNIC)>$siretReprise "; + if ($dateDebut && $dateDebut>19800101 && $dateDebut<=date('Ymd')) $strDateDeb=" AND (insDCRET BETWEEN $dateDebIniYmd AND $dateFinYmd OR insDCREN BETWEEN $dateDebYmd AND $dateFinYmd)"; + $nbRows=$iDb->select('insee.insee_even', "'' AS REF, insSIREN AS SIREN, insNIC AS NIC, concat(insSIREN, insNIC) AS siret", + "insCJ NOT BETWEEN 3000 AND 3999 AND insAPET700 NOT IN ('6820B','7020Z') AND + (insEVE IN ('110','120','125','130','145','M0C','M0R','CE','CS','CTE','CTS','RE','RS','CC','I') OR + insEVE IN ('510','520') AND insTYPETAB IN(9,11,21,31)) $strDateDeb $where10 $strReprise + GROUP BY siret ORDER BY siret ASC", true, MYSQL_ASSOC, true); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL; + echo mysql_error().EOL; + if (mysql_errno()>0) die(); + while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) { + if (!in_array($tabTmp['siret'], $tabSiret)) + exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69, $nafAMS); + } +} elseif ($presta==3.11) { + $iDb->query('SELECT siretTrouve AS siret FROM tmp.adecco_out UNION SELECT siret FROM tmp.adecco_out;'); + echo mysql_error().EOL; + if (mysql_errno()>0) die(); + $tabSiret=array(); + while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) { + $tabSiret[]=$tabTmp['siret']; + } + $tabSiret=array_unique($tabSiret); + $nbRows=count($tabSiret); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siret Adecco uniques à exclure en Presta $presta...".EOL; + /** Les Créations d'étab>10 **/ + $where10="AND APE_ETAB IN ('7810Z','7820Z','7830Z')"; + + if ($siretReprise) $strReprise=" AND CONCAT(insSIREN, insNIC)>$siretReprise "; + $nbRows=$iDb->select('insee.identite', "'' AS REF, SIREN, NIC, concat(SIREN, NIC) AS siret", + "CJ NOT BETWEEN 3000 AND 3999 AND ACTIF=1 $strDateDeb $where10 $strReprise + GROUP BY siret ORDER BY siret ASC", true, MYSQL_ASSOC, true); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL; + echo mysql_error().EOL; + if (mysql_errno()>0) die(); + while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) { + if (!in_array($tabTmp['siret'], $tabSiret)) + exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69, $nafAMS); + } +} elseif ($presta==3.2) { + /** Toutes les Fermetures **/ + $iDb->query('SELECT CONCAT(siren,nic) AS siret FROM tmp.adecco_fermetures;'); + echo mysql_error().EOL; + if (mysql_errno()>0) die(); + $tabSiret=array(); + while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) { + $tabSiret[]=$tabTmp['siret']; + } + $tabSiret=array_unique($tabSiret); + $nbRows=count($tabSiret); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siret Adecco uniques à exclure en Presta $presta (fermetures déjà communiquées)...".EOL; + + //$dateDebYmd=20120701; + if ($siretReprise) $strReprise=" AND CONCAT(insSIREN, insNIC)>$siretReprise "; + if ($dateDebut && $dateDebut>19800101 && $dateDebut<=date('Ymd')) $strDateDeb=" AND insDATEVE<=$dateFinYmd AND dateInsert>=$dateDebYmd "; + +/* 'iCE' =>'Création établissement', + 'iCS' =>'Création siège', + 'iCTE' =>'Création établissement (transfert)', + 'iCTS' =>'Création siège (transfert)', + 'iRE' =>'Réactivation établissement', + 'iRS' =>'Réactivation siège', + 'iCC' =>'Création par le calage', + 'iI' =>'Entrée dans le champ de la diffusion commerciale', +*/ + else die('Préciser une date de début valide !'.EOL); + $nbRows=$iDb->select('insee.insee_even', "'' AS REF, insSIREN AS SIREN, insNIC AS NIC, concat(insSIREN, insNIC) AS siret, insDATEVE, insEVE", + "(insEVE IN ('400','410','430','435','795','810','M0F','SU','SE','SS','STE','STS','RI','SC','O') OR + insEVE IN ('510','530') AND insTYPETAB IN(8,10,20,30)) $strDateDeb $strReprise GROUP BY siret ORDER BY siret ASC", true, MYSQL_ASSOC, true); + echo "SELECT '' AS REF, insSIREN AS SIREN, insNIC AS NIC, concat(insSIREN, insNIC) AS siret, insDATEVE, insEVE +FROM insee.insee_even +WHERE (insEVE IN ('400','410','430','435','795','810','M0F','SU','SE','SS','STE','STS','RI','SC','O') OR + insEVE IN ('510','530') AND insTYPETAB IN(8,10,20,30)) $strDateDeb $strReprise GROUP BY siret ORDER BY siret ASC".EOL; + + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta (fermetures à transmettre)...".EOL; + echo mysql_error().EOL; + if (mysql_errno()>0) die(); + //die(); + + fwrite($fp, "adSIREN|adNIC|sdActif|sdEvenDate|sdEven".EOL); + while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) { + $even=''; + switch ($tabTmp['insEVE']) { + /*'i*/ + case '400': $even.='suppression du doublon '; break; + case 'SU': + case '410': $even.='cessation juridique de l\'entreprise '; break; + case '420': + case '425': $even.='cessation économique de l\'entreprise '; break; + case 'M0F': + case '430': + case 'SE': + case 'SC': + case '435': $even.='fermeture de l\'etablissement '; break; + case '510': + case 'STE': + case 'STS': + case '530': $even.='fermeture de l\'etablissement dans le cadre d\'un transfert '; break; + case '620': + case '621': + case '650': $even.='cessation economique de l\'etablissement '; break; + case '795': $even.='personne radiee a sa demande de SIRENE diffusion '; break; + case '810': $even.='suppression du siren suite à refus RCS'; break; + case 'SS': $even.='Fermeture ou désactivation du siège'; break; + case 'RI': $even.='Refus d\'immatriculation au RCS'; break; + case 'O': $even.='Sortie du champ de la diffusion commerciale'; break; + default: $even.=' '; break; + } + $strOut=$tabTmp['SIREN'].'|'.$tabTmp['NIC'].'|0|'.$tabTmp['insDATEVE'].'|'.trim($even).EOL; + if ($fp) { + if (!in_array($tabTmp['SIREN'].$tabTmp['NIC'], $tabSiret)) { + fwrite($fp, str_replace(';',' ',$strOut)); + $iDb3->insert('adecco_fermetures', array( 'siren'=>$tabTmp['SIREN'], + 'nic'=>$tabTmp['NIC'], + 'evenDate'=>$tabTmp['insDATEVE'], + 'even'=>trim($even), + 'presta'=>$presta, + 'prestaDate'=>$date)); + } + } + echo $strOut; + } +} elseif ($presta==3.3) { + if ($siretReprise) $strReprise=" AND concat(siren,nic)>$siretReprise "; + /** Toutes les Liens Groupe des étabs > 9 salariés **/ +/* if ($eff69) $where10='AND eff_etab>5'; + elseif($nafAMS) $where10="AND (eff_etab>5 OR (teff_etab IS NOT NULL AND eff_etab IN (0,1,2) AND presentRcs=1 + AND ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')))"; + else $where10='AND eff_etab>9';*/ + $where10="AND (eff_etab>5 OR (teff_etab IS NOT NULL AND eff_etab IN (0,1,2) AND presentRcs=1 + AND ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')))"; + $nbRows=$iDb->select('jo.etablissements_act', "'' AS REF, siren AS SIREN, nic AS NIC, concat(siren,nic) AS siret, sirenGrp", + "cj NOT BETWEEN 3000 AND 3999 AND ape_etab NOT IN ('6820B','7020Z') $where10 AND sirenGrp>1000 $strReprise ORDER BY siren, nic", true, MYSQL_ASSOC, true); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL; + echo mysql_error().EOL; + if (mysql_errno()>0) die(); + fwrite($fp, "adSIREN|adNIC|sdPctAct|sdSirenAct|sdNomAct".EOL); + $sirenPre=false; + $pctAct=$sirenAct=$nomAct=''; + while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) { + $siren=$tabTmp['SIREN']; + // Actionnaire + if ($siren<>$sirenPre) { + $pctAct=$sirenAct=$nomAct=''; + $tabAct=$iLiens->getActionnaires($siren, true); + foreach ($tabAct as $i=>$lien) { + $sirenAct=$lien['Siren']*1; + if($sirenAct>1000 && $lien['PminNum']>=50) { + $ret=$iDb2->select('jo.etablissements_act', 'sirenGrp', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC); + if (count($ret)==1) $sirenAct=$ret[0]['sirenGrp']; + $tabIdentiteA=@$iInsee->getIdentiteLight($sirenAct); + $pctAct=$lien['Pmin']; + $nomAct=str_replace('|',' ',$tabIdentiteA['Nom']); + break; + } else + $sirenAct=''; + } + if ($sirenAct<=1000) $sirenAct=''; + } + if ($pctAct=='' && $sirenAct=='' && $nomAct=='') { + $sirenPre=$siren; + continue; + } + $strOut=$tabTmp['SIREN'].'|'.$tabTmp['NIC']."|$pctAct|$sirenAct|$nomAct".EOL; + if ($fp) fwrite($fp, str_replace(';',' ',$strOut)); + echo $strOut; + $sirenPre=$siren; + } +} else { + /** @todo + - Non présents dans le fichier source Adecco + - Non Fournis dans le fichier principal (Déménagements, et affectation de NIC valide) + etab >= à 10 salariés, France entière avec Corse et les DOM TOM. Les sociétés étrangères immatriculées au RCS sont à exclure. + Les 2 NAF suivants sont à exclure + 6820B = SCI/location de terrains + 7020Z = Holding + */ + $tabSiret=array(); + $iDb->query('DROP table IF EXISTS adecco_siret;'); + $iDb->query('CREATE TABLE adecco_siret SELECT siret FROM tmp.adecco_in UNION SELECT siretTrouve AS siret FROM tmp.adecco_out;'); + $iDb->query('ALTER TABLE adecco_siret CHANGE siret siret BIGINT(14) UNSIGNED ZEROFILL NULL DEFAULT NULL, ADD PRIMARY KEY(siret);'); + /*echo mysql_error().EOL; + if (mysql_errno()>0) die(); + while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) { + $tabSiret[]=$tabTmp['siret']; + } + $tabSiret=array_unique($tabSiret); + $nbRows=count($tabSiret);*/ + //echo date('Y/m/d - H:i:s') ." - Il y a $nbRows siret Adecco uniques à exclure en Presta $presta...".EOL; + echo date('Y/m/d - H:i:s') ." - Préparation des siret Adecco uniques à exclure en Presta $presta...".EOL; + /*if ($eff69) $where10='AND (eff_etab>5 OR teff_etab>2) AND (eff_etab<10 OR teff_etab<11)'; + elseif($nafAMS) $where10="AND eff_etab>=0 AND eff_etab<3 AND teff_etab IS NOT NULL AND presentRcs=1 + AND ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B')"; + else $where10='AND (eff_etab>9 OR teff_etab>10)'; + */ + $where10="AND (eff_etab>5 OR ape_etab IN ('4773Z','8610Z','8621Z','8622A','8622B','8622C','8623Z','8690A','8690B','8690C','8690D','8690E','8690F','8710A','8710B','8810A','8810B','8810C','8891A','8891B','8899A','8899B'))"; + + + if ($siretReprise) $strReprise=" AND concat(siren,nic)>$siretReprise "; + $nbRows=$iDb->select('jo.etablissements_act', "'' AS REF, siren AS SIREN, nic AS NIC, concat(siren, nic) AS siret", + "cj NOT BETWEEN 3000 AND 3999 AND ape_etab NOT IN ('6820B','7020Z') $where10 /*AND dateCrea_etab<=20120801*/ + AND concat(siren, nic) NOT IN(SELECT siret FROM tmp.adecco_siret) $strReprise ORDER BY siret", true, MYSQL_ASSOC, true); +// $strReprise ORDER BY siret", true, MYSQL_ASSOC, true); +// "siret NOT IN(SELECT CONCAT(SIREN,NIC) AS siret FROM tmp.adecco_echantillon)", true, MYSQL_ASSOC, true); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows établissements Adecco en Presta $presta...".EOL; + echo mysql_error().EOL; + if (mysql_errno()>0) die(); + + //die(); + + while($tabTmp=$iDb->fetch(MYSQL_ASSOC)) { + if (!in_array($tabTmp['siret'], $tabSiret)) { + //echo 'siret='.$tabTmp['siret'].EOL; + exporteAdecco($tabTmp['siret'],$tabTmp['REF'],$fp, $presta, $eff69, $nafAMS); + } + } + $iDb->query('DROP table adecco_siret;'); +} +echo date('Y/m/d - H:i:s') ." - Fin de la prestation Adecco en Presta $presta.".EOL; +fclose($fp); + +if (($presta==3.1 || $presta==3.2 || $presta==3.3) && $mailTo) { + $tabAttached=array($nomFichier); + $messageInfo="Bonjour, + + Veuillez trouver ci-joint le fichier Scores & Décisions relatifs à votre prestation contractuelle n°$presta. + + Bien Cordialement, + Le service Support. + + -- + + SCORES & DECISIONS + Service support + 1, rue de Clairefontaine - 78120 RAMBOUILLET + tél : 33 (0)1 75 43 80 10 + fax : 33 (0)1 75 43 85 74 + support@scores-decisions.com + http://www.scores-decisions.com/ + Scores & Décisions est l'acteur nouvelle génération de l'information et de l'évaluation des entreprises + + Pensez à l'environnement avant d'imprimer ce message ! + Save paper - think before you print"; + + @sendMail('production@scores-decisions.com', $mailTo, "Prestation Adecco S&D $presta", $messageInfo, '', $tabAttached); +} + + +die(); + + +function exporteAdecco($siret,$ref,$fp=false, $presta, $eff69=false, $nafAMS=false, $RAISON_SOCIALE='', $ADRESSE='', $FILLER='', $CP='', $VILLE='', $ADSE='') { + global $iDb2,$iDb3,$iLiens,$iBilan,$iInsee,$date; + $siren=substr($siret,0,9); + $nic=substr($siret,9,5); + $strIdentite=" +SIREN,NIC,NOM AS L1_nomen,NOM2 AS L2_ComP,ADR_COMP AS L3_cadr, +NULL AS L4_VOIE, ADR_DISTSP AS L5_disp, NULL AS L6_POST, PAYS AS L7_ETRG, '' AS ZR1, NULL AS RPET, ADR_DEP AS insdepet, +NULL AS ARRONET, NULL AS CTONET, ADR_COM AS comet, ADR_LIBCOM AS libcom, NULL AS DU, NULL AS TU, NULL AS UU, +ADR_CP AS codpos, '' AS ZR2, NULL AS TCD, NULL AS ZEMET, CODEVOIE, ADR_NUMVOIE AS NUMVOIE, ADR_BTQ AS INDREP, +ADR_TYPVOIE AS TYPVOIE, ADR_LIBVOIE AS LIBVOIE, ENSEIGNE, APE_ETAB AS apet700, '' AS ZR3, SIEGE, +TEFF_ET AS tefet, EFF_ET AS efetcent, ORIGINE, DCRET, NULL AS MMINTRET, ACTIVNAT, LIEUACT, ACTISURF, SAISONAT, MODET, +DAPET, DEFET, EXPLET, PRODPART, AUXILT, NULL AS EAEANT, NULL AS EAEAPET, NULL AS EAESEC1T, NULL AS EAESEC2T, NOM AS nomen, +SIGLE, CIVILITE, CJ, TEFF_ENT AS tefen, EFF_ENT AS efencent, APE_ENT AS insapen700, '' AS ZR4, APRM, TCA, +NULL AS RECME, DAPEN, DEFEN, DCREN,NULL AS MMINTREN, MONOACT, MODEN, EXPLEN, NULL AS EAEANN, NULL AS EAEAPEN, +NULL AS EAESEC1N, NULL AS EAESEC2N, NULL AS EAESEC3N, NULL AS EAESEC4N, NBETAB AS nbETEXPL, TCAEXP, REGIMP, +MONOREG, NULL AS RPEN,NULL AS DEPCOMEN, ACTIF AS sdActif";/*EFF_ET mediumint(7) UNSIGNED ZEROFILL Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + TEFF_ET*/ +//$tel + $strNotice=" +insSIREN AS SIREN, insNIC AS NIC, insL4_VOIE AS L4_VOIE, insL6_POST AS L6_POST, +insRPET AS RPET, insDEPCOMEN AS DEPCOMEN, insRPEN AS RPEN, insARRONET AS ARRONET, insCTONET AS CTONET, insTCD AS TCD, +insZEMET AS ZEMET, insDU AS DU, insTU AS TU, insUU AS UU, insMMINTRET AS MMINTRET, insMMINTREN AS MMINTREN, insRECME AS RECME, +insEAEANT AS EAEANT, insEAEAPET AS EAEAPET, insEAESEC1T AS EAESEC1T, insEAESEC2T AS EAESEC2T, insEAEANN AS EAEANN, +insEAEAPEN AS EAEAPEN, insEAESEC1N AS EAESEC1N, insEAESEC2N AS EAESEC2N, insEAESEC3N AS EAESEC3N, insEAESEC4N AS EAESEC4N"; + + $ret=$iDb2->select('insee.identite', $strIdentite, "SIREN=$siren AND NIC=$nic", false); + $ret2=$iDb2->select('insee.insee_notices', $strNotice, "insSIREN=$siren AND insNIC=$nic", false, MYSQL_ASSOC); + //echo '2:'.mysql_error().EOL; + //$ret=$iDb2->select('historiques.notice_201012', 'insSIREN,insNIC,insL1_nomen,insL2_ComP,insL3_cadr,insL4_VOIE,insL5_disp,insL6_post,insL7_ETRG,insZR1,insrpet,insdepet,insarronet,insctonet,inscomet,inslibcom,insdu,insTu,insuu,inscodpos,insZR2,instcd,inszemet,inscodevoie,insNUMVOIE,insINDREP,insTYPVOIE,insLIBVOIE,insENSEIGNE,insapet700,insZR3,inssiege,instefet,insefetcent,insorigine,insdcRET,insMMIntrET,insACTIVNAT,insLIEUACT,insACTISURF,inssaisonat,insMODET,insdapet,insdefet,insEXPLET,insProdpart,insauxilt,inseaeant,inseaeapet,inseaesec1t,inseaesec2t,insnomen,inssigle,insCIVILITE,inscj,instefen,insefencent,insapen700,insZR4,insaprm,instca,insrecme,insdapen,insdefen,insdcren,insmmintren,insmonoact,insMODEN,insEXPLEN,inseaeann,insEAEapen,inseaesec1n,inseaesec2n,inseaesec3n,inseaesec4n,insnbETEXPL,instcaexp,insregimp,insmonoreg,insrpen,insdepcomen', "siret='$siret'", false); + $even=$evenDate=$nomPrenomDir=$YP=$pctAct=$sirenAct=$nomAct=''; + $strOut="$siren|$nic|$ref|$RAISON_SOCIALE|$ADRESSE|$FILLER|$CP|$VILLE|$ADSE|"; + + if (count($ret)==0) { + /*$actif=0; + $strOut.="$siren|$nic|"; + for($i=0;$i<79;$i++) + $strOut.='|';*/ + $even='Siren/Siret invalide'; + // Recherche par IDENTITE + $deb=0;$nbRep=20;$maxRep=20;$siege=$actif=''; + $nomIn=$RAISON_SOCIALE; + $adrIn=$ADRESSE; + //$FILLER + $cpIn=$CP; + $comIn=$VILLE; + $res=@$iInsee->rechercheEtab($nomIn, $adrIn, $cpIn, $comIn, $siege, $actif, $deb, $nbRep, $maxRep, false, true); + if ($res['nbReponses']>0) { + $levMin=1; + $trouve=false; + foreach ($res['reponses'] as $i=>$etab) { + //die(print_r($etab)); + $size=strlen($nomIn.$etab['Nom'].$adrIn.$etab['Adresse'].$cpIn.$etab['CP'].$comIn.$etab['Ville']); + $levNom=levenshtein($nomIn,$etab['Nom']); + $levAdr=levenshtein($adrIn,$etab['Adresse']); + $levCP =levenshtein($cpIn ,$etab['CP']); + $levCom=levenshtein($comIn,$etab['Ville']); + $levTot=$levNom+$levAdr+$levCP+$levCom; + $levPct=$levTot/$size; + if ($levPct<0.15 && $levPct<$levMin) { + $trouve=true; + $siret=''.$etab['Siren'].''.$etab['Nic']; + $levMin=$levPct; + } + } + + if ($trouve) { + $siren=substr($siret,0,9); + $nic=substr($siret,9,5); + $ret=$iDb2->select('insee.identite', $strIdentite, "SIREN=$siren AND NIC=$nic", false); + $ret2=$iDb2->select('insee.insee_notices', $strNotice, "insSIREN=$siren AND insNIC=$nic", false, MYSQL_ASSOC); + } + } + } + if (count($ret)==0) { + $actif=0; + $strOut.="$siren|$nic|"; + for($i=0;$i<80;$i++) + $strOut.='|'; + $even='Siren/Siret inexistant'; + } else { + $tmp=$ret[0]; + $actif=$tmp['sdActif']*1; + /** Geocodage si NAF = 7820Z, 7830Z et 7810Z **/ + $lat=$lon=$precis=''; + if ($tmp['apet700']=='7810Z' || + $tmp['apet700']=='7820Z' || + $tmp['apet700']=='7830Z') { + $mMap=new MMap(true); + $mMap->geoCodeAdresse($tmp['NUMVOIE'], $tmp['INDREP'], $tmp['TYPVOIE'], $tmp['TYPVOIE'], $tmp['LIBVOIE'], $tmp['codpos'], $tmp['libcom'], 'France', trim($tmp['insdepet'].$tmp['comet'].$tmp['CODEVOIE'])); + $lat=$mMap->latitudeDec; + $lon=$mMap->longitudeDec; + $precis=$mMap->precision; + //geoCodeAdrCpVilleF + } + + $nouveauSiret=''; + $tabAncienSiret=array(); + $nbDem=0; + while ($actif==0) { + if ($presta==2) return; + // Recherche du nouveau siret + //echo "DEB Recherche du nouveau siret pour $siren $nic actif=$actif, nbDem=$nbDem, nouveauSiret=$nouveauSiret/"; + $tabAssoc=@$iInsee->getSiretAssoc($siren, $nic); + $nouveauSiret=@trim(''.$tabAssoc['suc']['siren']. + $tabAssoc['suc']['nic']); + @$tabAncienSiret[$nouveauSiret]++; + if($nouveauSiret<>'' && @$tabAncienSiret[''.$siren.$nic]<=2) { + $nbDem++; + $siren=substr($nouveauSiret,0,9); + $nic=substr($nouveauSiret,9,5); + $ret=$iDb2->select('insee.identite', $strIdentite, "SIREN=$siren AND NIC=$nic", false); + $ret2=$iDb2->select('insee.insee_notices', $strNotice, "insSIREN=$siren AND insNIC=$nic", false, MYSQL_ASSOC); + $tmp=$ret[0]; + $actif=$tmp['sdActif']*1; + $even="Etablissement déménagé $nbDem fois "; + } else + break; + //echo "FIN Recherche du nouveau siret pour $siren $nic actif=$actif, nbDem=$nbDem, nouveauSiret=$nouveauSiret/"; + } + //$tmp=$ret[0]; + //$actif=$tmp['sdActif']; + $effet=$tmp['efetcent']*1; + $effetTR=$tmp['tefet']*1; + + //(insEFENCENT>5 || insTEFET>2) + + $tmp2=@$ret2[0]; + $afficherNotice=false; + if ($actif*1==0) { + $actif=0; + $strOut.="$siren|$nic|"; + for($i=0;$i<80;$i++) + $strOut.='|'; + if (@$even=='') $even='Etablissement inactif '; + else $even.='inactif '; + + // Recherche du dernier Even Insee + $ret=$iDb2->select('insee.insee_even', 'insEVE,insDATEVE,insSIRETPS,idFlux,insSIRETASS', "insSIREN=$siren AND insNIC=$nic AND insEVE IN (400,410,420,425,430,435,510,530,620,621,650,795)", false, MYSQL_ASSOC); + if (count($ret)==1 ) { + $tmp=$ret[0]; + /*$siret2=$tmp['insSIRETPS']*1; + if ($siret2==0) $siret2=$tmp['insSIRETASS']*1; + if ($siret2>0) $siret2=' de/vers '.$siret2; + else $siret2='';*/ + $infoFusion=false; + switch ($tmp['insEVE']*1) { + case 400: $even.='suppression du doublon '; break; + case 410: $even.='cessation juridique de l\'entreprise '; $infoFusion=true; break; + case 420: + case 425: $even.='cessation économique de l\'entreprise ';$infoFusion=true; break; + case 430: + case 435: $even.='fermeture de l\'etablissement '; break; + // case 510: + // case 530: $even.='transfert'.$siret2.' '; break; + case 620: + case 621: + case 650: $even.='cessation economique de l\'etablissement '; break; + case 795: $even.='personne radiee a sa demande de SIRENE diffusion '; break; + default: $even.=' '; break; + } + $evenDate=$tmp['insDATEVE']; + if ($infoFusion) { + // Annonces BODACC Fusion/Absorptions + $tabFusion=$iInsee->getAnnoncesLegales($siren, 0, array(2700,2701,2702,2703,2710,2720,2721,2725,2726,2730,2740), false); + if (count($tabFusion)>0) { + $FUSIONPROJET_SIREN=0; + foreach ($tabFusion as $iDep=>$depot) { + if ($iDep==0) + $ANNONCEFUSDATE=$depot['DateParution']; + $ANNONCEFUS++; + $FUSIONPROJET_DATE=$depot['dateJugement']; // Date du projet de fusion + $FUSIONPROJET=$depot['complement']; // Présence d'un projet de fusion, libellé du projet + if (preg_match_all("/((?:[0-9]{9,9})|(?:[0-9]{3,3} [0-9]{3,3} [0-9]{3,3})|(?:[0-9]{3,3}\.[0-9]{3,3}\.[0-9]{3,3})|(?:[0-9]{3,3}-[0-9]{3,3}-[0-9]{3,3}))/", $FUSIONPROJET, $matches)) { + foreach ($matches[1] as $FUSIONPROJET_SIREN) { + $FUSIONPROJET_SIREN=strtr($FUSIONPROJET_SIREN, array('.'=>'','-'=>'', ' '=>'')); + if (!$iInsee->valideSiren($FUSIONPROJET_SIREN)) $FUSIONPROJET_SIREN=0; + else break; + } + } + if ($FUSIONPROJET_SIREN*1>1000) break; + } + $even.='dans le cadre d\'une fusion '; + if ($FUSIONPROJET_SIREN>1000) $even.="avec $FUSIONPROJET_SIREN "; + } + if (strtr($evenDate,array('-'=>''))*1==0) { + $tabRad=$iInsee->getAnnoncesLegales($siren, 0, array(2000,2200,2201,2202,2203,2204,2205,2206,2208,2210,2212,6000,6001,6002,6003,6004,6005,6100,6200,6201,6300,6400,6500,6600,6700), false); + $evenDate=$tabRad[0]['DateParution']; + } + } + } + } else { + foreach ($tmp as $i=>$value) { + if (is_numeric($i)) { + if ($value===null) + $afficherNotice=true; + else { + $strOut.=str_replace('|',' ',$tmp[$i]).'|'; + $afficherNotice=false; + } + } else { + if ($afficherNotice) { + $strOut.=str_replace('|',' ',$tmp2[$i]).'|'; + } + } + } + + if ($presta==2) { +/* if ($eff69 && (($effet<6 && $effetTR<3) || $actif==0)) return; + elseif ($nafAMS && ($effet>5 || $actif==0)) return; + elseif (!$eff69 && !$nafAMS && ($effet<10 || $actif==0)) return;*/ + if (($effet<6 && $effetTR<3) || $actif==0) return; + } + + // Dirigeant + /*$ret=$iDb2->select('jo.etablissements', 'dirNom,dirPrenom', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC); + $tmp=@$ret[0];*/ + $nomPrenomDir='';//trim($tmp['dirPrenom'].' '.$tmp['dirNom']); + + // Actionnaire + $tabAct=$iLiens->getActionnaires($siren, true); + foreach ($tabAct as $i=>$lien) { + $sirenAct=$lien['Siren']*1; + //die(print_r($lien)); + if($sirenAct>1000 && $lien['PminNum']>=50 /*|| $lien['MajMin']=='+')*/) { + $ret=$iDb2->select('jo.etablissements_act', 'sirenGrp', "siren=$siren LIMIT 0,1", false, MYSQL_ASSOC); + if (count($ret)==1) $sirenAct=$ret[0]['sirenGrp']; + $tabIdentiteA=$iInsee->getIdentiteLight($sirenAct); + $pctAct=$lien['Pmin']; + $nomAct=$tabIdentiteA['Nom']; + break; + } else + $sirenAct=''; + } + if ($sirenAct<=1000) $sirenAct=''; + } + } + + $ret2=$iDb2->select('jo.telephonie', 'telephone', "siren=$siren AND nic=$nic AND typeTel='tel' AND actif=1 AND dateSuppr=0 ORDER BY dateInsert DESC LIMIT 0,1", false, MYSQL_ASSOC); + $tel=@$ret2[0]['telephone']; + + //$strOut.="$evenDate|$even|".str_replace('|',' ',$nomPrenomDir)."|$YP|$pctAct|$sirenAct|".str_replace('|',' ',$nomAct)."|$tel".EOL; + // Suppression de la livraison des liens a Adecco le 5/03/2015 + $strOut.="$evenDate|$even|".str_replace('|',' ',$nomPrenomDir)."|$YP||||$tel|$lat|$lon|$precis".EOL; + + //if ($presta==1) { + $iDb3->insert('adecco_out', array( 'ref'=>$ref, + 'siren'=>$siren, + 'nic'=>$nic, + 'siretTrouve'=>$siren.''.$nic, + 'siret'=>$siret, + 'evenDate'=>$evenDate, + 'even'=>$even, + 'presta'=>$presta, + 'prestaDate'=>$date)); + //} + //echo $strOut; + echo "$siret\t$ref\t$ADSE\t$RAISON_SOCIALE\t$CP\t$VILLE".EOL; + if ($fp) fwrite($fp, str_replace(';',' ',$strOut)); +} + + ?> diff --git a/bin/diffusionRRG.php b/bin/diffusionRRG.php new file mode 100644 index 00000000..bb7cacd6 --- /dev/null +++ b/bin/diffusionRRG.php @@ -0,0 +1,517 @@ +#!/usr/bin/php +1) +{ + for ($i=1; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (substr($argv[$i],1,1)) { + case 'i': + $mailSuivi=false; + break; + case 'd': + $dateJourCmd=substr($argv[$i],3,strlen($argv[$i])-3); + break; + case 'l': + $doLockSql=true; + break; + case 'f': + $fileInput=substr($argv[$i],3,strlen($argv[$i])-3); + break; + case 's': + $siretInput=true; + break; + case '-': + case '?': + die($strInfoScript); + break; + default: + die('Option '. $argv[$i] . " inconnue !\n"); + break; + } + } elseif ($argv[$i]>10000 && $siretInput) $tabSiret[]=$argv[$i]; + } +} + +//$iAmabis=new MAmabis(); +$iRnvp=new MRnvp(); +$iInsee=new MInsee(); +$iRncs=new MRncs(); +$iDb=new WDb('tmp'); +$iDb2=new WDb('tmp'); + +$scriptName=basename($argv[0]); + +if (count($tabSiret)>0 || $fileInput) { + if ($fileInput) $tabSiret=file($fileInput); + + // Ajout de la demande de MAJ du siret + /** @todo + * - MEttre un verrou afin de pouvoir vérifier si le traitement du jour n'est pas en cours (attention à l'étape SQL) + * - Lancer les commandes SQL insert into ... + * - Créer une source MANUEL + */ + if (file_exists(REP_TEMP.basename($scriptName).'.lock')) { + //date('Ymd-His')."$fichier;Traitement PHP du $dateJourSql;$fileName;Export de $nbEtab établissements".EOL); + // $tab2Tmp=explode(';',file_get_contents(REP_TEMP.basename($fichier).'.lock')); + //$date2Tmp=WDate::DateT('YmdHis', 'd/m/Y H:i:s',$tab2Tmp[1]); + // $nbL2Tmp=$tab2Tmp[2]; + // $message="Le fichier $fichier est en cours de chargement depuis le $date2Tmp ($nbL2Tmp lignes)..."; + echo date('Y/m/d - H:i:s')." - Le traitement RRG est en cours, patienter et recommencer plus tard !!!".EOL; + die(); + } + + foreach ($tabSiret as $iSiret=>$siret) { + $siren=substr($siret,0,9); + $nic=substr($siret,9,5); + if ($nic>9) $strNic=" AND NIC=$nic "; + $strPre=''; + $ret=$iDb->select('tmp.diffusionRRG','dateSurrfa,dateSurrfa*1 AS dateSurrfaYmd, dateFlux,srcFlux,dateInsert,dateUpdate', "SIREN=$siren $strNic ORDER BY dateSurrfa DESC LIMIT 0,1", false, MYSQL_ASSOC); + if (@$ret[0]['dateSurrfaYmd']*1>0) $strPre=' (dernier envoi le '.$ret[0]['dateSurrfa'].')'; + $iDb->query("INSERT INTO tmp.diffusionRRG SELECT NULL as idLine, id, SIREN, NIC, 'SED' AS source, TRIM(REPLACE(REPLACE(IF(NOMEN_LONG='',NOM,NOMEN_LONG),'/',' '),'*',' ')) AS rs, insL1_NOMEN AS adrL1, 'N' AS adrL1t, SIGLE, ENSEIGNE AS ens, insL2_COMP AS adrL2, '' AS adrL2t, IF (SIEGE=0,'SEC','PRIN') AS statut, IF (ACTIF=1,'','CESSE') AS situ, '' AS maj, 0 AS dateHexavia, '' AS codVoieHexavia, CONCAT (ADR_DEP, ADR_COM) AS codeInseeCom, '' AS libInseeCom, '' AS cpCom, insL3_CADR AS adrL3, ADR_NUMVOIE AS adrNum, ADR_BTQ AS adrBtq, '' AS adrNum2, '' AS adrBtq2, insL4_VOIE AS adrLibVoie, insL5_DISP AS adrDisp, insL5_DISP AS adrComp, insL6_POST AS adrL6, DCRET AS dateCrea, 'J' AS dateCreaPre, CJ AS fj, '' AS fjLib, APE_ENT AS nafEn, '' AS nafEnLib, APE_ETAB AS nafEt, '' AS nafEtLib, TEL, IF(CIVILITE=1,'M',IF(CIVILITE=2,'MME',CIVILITE)) AS dirCiv, DIR_IDEN AS dirNom, '' AS dirPrenom, '' AS dirFctCode, '' AS dirFctLib, '' AS bilanMil, '' AS bilanFL, EFF_ENT AS effEn, EFF_ET AS effEt, 0 AS nicSiege, '' AS even, '' AS evenLib, '' AS tva, '' AS email, 0 AS siretPre, 0 AS siretSuc, ADDDATE(NOW(), INTERVAL 1 DAY) AS dateSurrfa, 0 AS dateFlux, 'MANUEL' AS srcFlux, dateUpdate AS dateInsert, 0 as dateUpdate FROM insee.identite WHERE SIREN=$siren $strNic"); + if (!mysql_errno()) + echo date('Y/m/d - H:i:s')." - Siret $siren $nic ajouté avec succès au flux de demain".$strPre.EOL; + else + echo date('Y/m/d - H:i:s')." - Siret $siren $nic non ajouté car erreur SQL N°".mysql_errno().' : '.mysql_error().' !'.EOL; + } + + die(); +} + +if (!$doLockSql) { + $message=date('Y/m/d - H:i:s') ." - Début du traitement RRG...".EOL; + echo date('Y/m/d - H:i:s') ." - Début du traitement RRG...".EOL; +} + +/*$iDb=new WDb('sdv1'); +$tabRRG=array( 'client' => 'rrg', + 'name' => 'HEXAVIA', + 'nbLines' => 11948, // Nombre de ligne + 'dateBegin' => 20150105200503, // Date de début de traitement au format YmdHis + 'dateEnd' => 20150105203052, // Date de fin de traitement au format YmdHis + 'fileOut' => 'surrfa_20150105.csv', // Nom du fichier sans le chemin + 'depotType' => 'FTP', + 'depotDate' => '0000-00-00 00:00:00'); +$iDb->insert('flux_fileout', $tabRRG, false); +*/ + +/* +$nbEtab=$iDb->query("# On efface tout depuis l'init de la presta RRG +DELETE FROM tmp.diffusionRRG WHERE id>0; + +# On stock la dernière date de MAJ +SET @lastDateMaj := (SELECT MAX(dateUpdate) FROM tmp.diffusionRRG); + +# Ajout des établissements modifiés +INSERT INTO tmp.diffusionRRG SELECT id, SIREN, NIC, 'INS' AS source, TRIM(REPLACE(REPLACE(NOMEN_LONG,'/',' '),'*',' ')) AS rs, insL1_NOMEN AS adrL1, 'N' AS adrL1t, SIGLE, ENSEIGNE AS ens, insL2_COMP AS adrL2, '' AS adrL2t, IF (SIEGE=0,'SEC','PRIN') AS statut, IF (ACTIF=1,'','CESSE') AS situ, '' AS maj, 0 AS dateHexavia, '' AS codVoieHexavia, CONCAT (ADR_DEP, ADR_COM) AS codeInseeCom, '' AS libInseeCom, '' AS cpCom, insL3_CADR AS adrL3, ADR_NUMVOIE AS adrNum, ADR_BTQ AS adrBtq, '' AS adrNum2, '' AS adrBtq2, insL4_VOIE AS adrLibVoie, insL5_DISP AS adrDisp, insL5_DISP AS adrComp, insL6_POST AS adrL6, DCRET AS dateCrea, 'J' AS dateCreaPre, CJ AS fj, '' AS fjLib, APE_ENT AS nafEn, '' AS nafEnLib, APE_ETAB AS nafEt, '' AS nafEtLib, TEL, IF(CIVILITE=0,'',IF(CIVILITE=1,'M','MME')) AS dirCiv, DIR_IDEN AS dirNom, '' AS dirPrenom, '' AS dirFctCode, '' AS dirFctLib, '' AS bilanMil, '' AS bilanFL, EFF_ENT AS effEn, EFF_ET AS effEt, 0 AS nicSiege, '' AS even, '' AS evenLib, '' AS tva, '' AS email, 0 AS siretPre, 0 AS siretSuc, 0 AS idFlux, dateUpdate FROM insee.identite WHERE dateUpdate>=@lastDateMaj ; +# Ajout du code mouvement +UPDATE tmp.diffusionRRG, insee.insee_even +SET diffusionRRG.maj='C' +WHERE diffusionRRG.maj='' AND diffusionRRG.siren=insee_even.insSIREN AND diffusionRRG.nic=insee_even.insNIC AND insee_even.idFlux>=@lastDateMaj AND insee_even.insVMAJ='C'; +UPDATE tmp.diffusionRRG, insee.insee_even +SET diffusionRRG.maj='S' +WHERE diffusionRRG.maj='' AND diffusionRRG.siren=insee_even.insSIREN AND diffusionRRG.nic=insee_even.insNIC AND insee_even.idFlux>=@lastDateMaj AND insee_even.insVMAJ='E'; +UPDATE tmp.diffusionRRG +SET maj='M' +WHERE maj=''; +# Ajout du NIC siège +UPDATE tmp.diffusionRRG, insee.insee_even +SET diffusionRRG.nicSiege=insee_even.insNICSIEGE +WHERE diffusionRRG.nicSiege=0 AND diffusionRRG.siren=insee_even.insSIREN AND diffusionRRG.nic=insee_even.insNIC AND insee_even.idFlux>=@lastDateMaj; +# Ajout des radiations +UPDATE tmp.diffusionRRG, jo.rncs_entrep +SET diffusionRRG.situ='RADIE' +WHERE diffusionRRG.situ='CESSE' AND diffusionRRG.siren=rncs_entrep.siren AND rncs_entrep.actif=0 AND diffusionRRG.dateUpdate>=@lastDateMaj; + +# Ajout des libellés FJ et NAF +UPDATE tmp.diffusionRRG, jo.tabFJur +SET diffusionRRG.fjLib=tabFJur.libelle +WHERE diffusionRRG.fj=tabFJur.code AND diffusionRRG.fjLib=''; +UPDATE tmp.diffusionRRG, jo.tabNaf5 +SET diffusionRRG.nafEnLib=tabNaf5.libNaf5 +WHERE diffusionRRG.nafEn=tabNaf5.codNaf5 AND diffusionRRG.nafEnLib=''; +UPDATE tmp.diffusionRRG, jo.tabNaf5 +SET diffusionRRG.nafEtLib=tabNaf5.libNaf5 +WHERE diffusionRRG.nafEt=tabNaf5.codNaf5 AND diffusionRRG.nafEtLib=''; + +# Ajout des zones Hexavia +SET @lastDateHexa := (SELECT MAX(dateMaj38) FROM villes.hexaviaVilles); +UPDATE tmp.diffusionRRG +SET diffusionRRG.dateHexavia=@lastDateHexa +WHERE diffusionRRG.dateHexavia=0; +UPDATE tmp.diffusionRRG, villes.rnvpSources +SET diffusionRRG.codVoieHexavia=rnvpSources.IdHexavia, + diffusionRRG.libInseeCom=rnvpSources.Ville, + diffusionRRG.cpCom=rnvpSources.Cp +WHERE diffusionRRG.codVoieHexavia='' AND diffusionRRG.id=rnvpSources.source_id AND rnvpSources.source=2; + +# Ajout du CA +UPDATE tmp.diffusionRRG, jo.etablissements_act +SET diffusionRRG.bilanMil=etablissements_act.bilAnnee, + diffusionRRG.bilanFL=etablissements_act.bilFL +WHERE diffusionRRG.bilanMil='' AND diffusionRRG.siren=etablissements_act.siren; +*/ + + +$dateDeb=date('Y-m-d H:i:s'); + +if ($dateJourCmd) { + $dateJourPhp=str_replace('-','',$dateJourCmd); + $dateJourSql=WDate::dateT('Ymd','Y-m-d',$dateJourPhp); + if (!$doLockSql) echo date('Y/m/d - H:i:s') ." - Recherche des établissements a exporter pour le : $dateJourSql...".EOL; +} else { + $dateJourSql=substr($dateDeb,0,10); + $dateJourPhp=str_replace('-','',$dateJourSql); + if (!$doLockSql) { + echo date('Y/m/d - H:i:s') ." - Il y a $nbEtab a exporter...".EOL; + echo date('Y/m/d - H:i:s') ." - Recherche des établissements a exporter du jour : $dateJourSql...".EOL; + } +} + +$fileName="surrfa_$dateJourPhp.csv"; +$anneeBilanVieux=substr($dateJourPhp,0,4)-3; + +$fpT=fopen(REP_TEMP.basename($scriptName).'.lock', 'w'); +if ($doLockSql) { + fwrite($fpT, date('Ymd-His').";$scriptName;Traitement RRG SQL du $dateJourSql;$fileName".EOL); + fclose($fpT); + die(); +} + +//$fileName="surrfa_20141231a.csv"; // Créations fait le 11/02/2015 +//$fileName="surrfa_20141230b.csv"; // Radiations fait le ??? + +$fpOut=fopen(REP_TEMP.$fileName,'w'); + +//Il faudra insérer dans la base de données (sdv1.flux_fileout) lorsque le fichier est généré, les informations suivantes + +$nbEtab=$iDb->select('tmp.diffusionRRG','idLine, id, siren, nic, CONCAT(siren, nic) AS siret, source, rs, adrL1, adrL1t, sigle, ens, adrL2, adrL2t, statut, situ, maj, dateHexavia, codVoieHexavia, codeInseeCom, libInseeCom, cpCom, adrL3, adrNum, adrBtq, adrNum2, adrBtq2, adrLibVoie, adrDisp, adrComp, adrL6, dateCrea, dateCreaPre, fj, fjLib, nafEn, nafEnLib, nafEt, nafEtLib, tel, dirCiv, dirNom, dirPrenom, dirFctCode, dirFctLib, bilanMil, bilanFL, effEn, effEt, nicSiege, even, evenLib, tva, email, siretPre, siretSuc, dateFlux, srcFlux, dateInsert, dateUpdate',"siren>0 AND dateSurrfa='$dateJourSql'", false, MYSQL_ASSOC, true); +//$nbEtab=$iDb->select('tmp.diffusionRRG','idLine, id, siren, nic, CONCAT(siren, nic) AS siret, source, rs, adrL1, adrL1t, sigle, ens, adrL2, adrL2t, statut, situ, maj, dateHexavia, codVoieHexavia, codeInseeCom, libInseeCom, cpCom, adrL3, adrNum, adrBtq, adrNum2, adrBtq2, adrLibVoie, adrDisp, adrComp, adrL6, dateCrea, dateCreaPre, fj, fjLib, nafEn, nafEnLib, nafEt, nafEtLib, tel, dirCiv, dirNom, dirPrenom, dirFctCode, dirFctLib, bilanMil, bilanFL, effEn, effEt, nicSiege, even, evenLib, tva, email, siretPre, siretSuc, dateFlux, srcFlux, dateInsert, dateUpdate', "siren>0 AND dateSurrfa='2014-12-30'", false, MYSQL_ASSOC, true); +echo mysql_error().EOL; + +echo date('Y/m/d - H:i:s') ." - Il y a $nbEtab a exporter...".EOL; +$message.=date('Y/m/d - H:i:s') ." - Il y a $nbEtab a exporter...".EOL; + +fwrite($fpT, date('Ymd-His').";$scriptName;Traitement RRG PHP du $dateJourSql;$fileName;Export de $nbEtab établissements".EOL); +fclose($fpT); + +$iL=0; +$accesDist=false; + +$nbCpVide76310=$nbCpVide=0; + +while($tabId=$iDb->fetch(MYSQL_ASSOC)) { + $iL++; + $idLine=$tabId['idLine']; + + $siren=$tabId['siren']; + $nic=$tabId['nic']; + + $source=$tabId['source']; + $source_id=$tabId['id']; + $tabRnvpSrc=@$iRnvp->getAdresseRnvpSource($source, $source_id); + + $iTva=@new MTva($siren, $accesDist); + $vatNumber=$iTva->vatNumber; + $nomLong=$tabId['rs']; + $iTel=new MTel($accesDist); + $tmp=$iTel->getTel($siren, $nic, true); + //print_r($tmp); + $tel=$mail=''; + foreach ($tmp as $tTel) { + if ($tTel['typeTel']=='tel' && $tTel['actif']==1 && $tel=='') $tel=$tTel['telephone']; + if ($tTel['typeTel']=='mail' && $tTel['actif']==1 && $mail=='') $mail=$tTel['infoTel']; + } + +// , , , , , adrL3, adrNum, adrBtq, adrNum2, adrBtq2, adrLibVoie, adrDisp, adrComp, adrL6, , dateCreaPre, fj, fjLib, nafEn, nafEnLib, nafEt, nafEtLib, tel, dirCiv, dirNom, dirPrenom, dirFctCode, dirFctLib, bilanMil, bilanFL, effEn, effEt, nicSiege, even, evenLib, tva, email, siretPre, siretSuc, idFlux, dateUpdate + + $hexaviaMat=$tabId['codVoieHexavia']; + if ($hexaviaMat<0) $hexaviaMat=''; + $tabRnvp=@$iRnvp->normaliseAdresse($nomLong, $tabId['adrL2'], $tabId['adrL3'], $tabId['adrLibVoie'], $tabId['adrDisp'], $tabId['adrL6'], '', $tailleRNVP); + echo "Normalisation SED :".EOL; + print_r($tabRnvp); + echo "Normalisation 76310 :".EOL; + print_r($tabRnvpSrc); + die(); + + if ($hexaviaMat*1==0) + $hexaviaMat=@$tabRnvp['HexaViaMat']; + $L1tr=$L2tr='N'; + if ($hexaviaMat*1>0 && @$tabRnvp['HexaViaMat']*1>0) { + $hexaviaVoie=@$tabRnvp['HexaViaVoie']; + $cp=@substr($tabRnvp['L6'],0,5); + $achPost=@trim(preg_replace('/^\d+/','', $tabRnvp['L6'])); + $L1=@$tabRnvp['L1']; + if (@$tabRnvp['L1_tr']==1) $L1tr='O'; + //$L1=$iRnvp->normaliseRS($nomLong, $tailleRNVP); + //if ($iRnvp->nomTronque==1) $L1tr='O'; + $L2=@$tabRnvp['L2']; + if (@$tabRnvp['L2_tr']==1) $L2tr='O'; + $L3=@trim($tabRnvp['L3']); + $L5=@trim($tabRnvp['L5']); + $codCommune=@$tabRnvp['HexaviaComCod']; + $libCommune=@$tabRnvp['HexaviaComLib']; + } else { + $hexaviaVoie=@trim(preg_replace('/^\d+/','', $tabId['adrLibVoie'])); + $cp=@substr($tabId['adrL6'],0,5); + $achPost=trim(preg_replace('/^\d+/','', $tabId['adrL6'])); + if ($cp<1000) { + $cp=$iRnvp->getCPCommune($tabId['codeInseeCom']); + $achPost=trim(preg_replace('/^\d+/','', $tabId['adrL6'])); + $nbCpVide++; + if ($cp<1000) { + $tabRnvp=$iRnvp->normaliseAdresse76310($nomLong, $tabId['adrL2'], $tabId['adrL3'], $tabId['adrLibVoie'], $tabId['adrDisp'], $tabId['adrL6']); + // print_r($tabRnvp); + $cp=substr($tabRnvp['L6'],0,5); + $achPost=trim(preg_replace('/^\d+/','', $tabRnvp['L6'])); + $nbCpVide76310++; + //die(); + } + echo "$iL/$nbEtab: $vatNumber $nic $L1\t$cp $achPost\t $nbCpVide76310 appels/$nbCpVide CP vides".EOL; + } + $L1=$iRnvp->normaliseRS($nomLong, $tailleRNVP); + if ($iRnvp->nomTronque==1) $L1tr='O'; + $L2=$iRnvp->normaliseRS($tabId['adrL2'], $tailleRNVP); + if ($iRnvp->nomTronque==1) $L2tr='O'; + $L3=trim($tabId['adrL3']); + $L5=trim($tabId['adrDisp']); + $codCommune=$tabId['codeInseeCom'];// Tester 97x + $libCommune=$iRnvp->getLibCommune($codCommune, $tailleRNVP); + } + //adrNum, adrBtq, adrNum2, adrBtq2, adrLibVoie, adrDisp, adrComp + $adrNum1=preg_replace('/^0+/','',$tabId['adrNum']); + $adrBtq1=$tabId['adrBtq']; + $adrNum2=$adrBtq2=''; + if ($adrNum1*1>0) { + $adrNum=$adrNum1*1; + if (preg_match("/^$adrNum(.*)$/Ui",trim($tabId['adrL3']), $matches)) { + $adrNum2=strtr($matches[1],array('AU '=>'','ET '=>'','A '=>'','/'=>'','-'=>'',)); + $adrBtq2=''; + } elseif (preg_match("/^$adrNum(.*)$/Ui",trim($tabId['adrDisp']), $matches)) { + $adrNum2=strtr($matches[1],array('AU '=>'','ET '=>'','A '=>'','/'=>'','-'=>'',)); + $adrBtq2=''; + } elseif (preg_match("/^$adrNum(.*)$/Ui",trim($tabId['adrL2']), $matches)) { + $adrNum2=strtr($matches[1],array('AU '=>'','ET '=>'','A '=>'','/'=>'','-'=>'',)); + $adrBtq2=''; + } + } + + $tabAssoc=$iInsee->getSiretAssoc($siren, $nic); + //print_r($tabAssoc); + + $tabDirs=$iRncs->getDirigeantsPrin($siren, 1); + if (count($tabDirs)>0) { + $civ=$tabDirs[0]['Civilite']; + $dir1Nom=$tabDirs[0]['Nom']; + $dir1Prenom=$tabDirs[0]['Prenom']; + $dir1Code=$tabDirs[0]['Fonction']; + $dir1Titre=$tabDirs[0]['Titre']; + } elseif ($tabId['fj']<2000) { + $civ=$tabId['dirCiv']; + $dir1Nom=$tabId['dirNom']; + $dir1Prenom=$tabId['dirPrenom']; + $dir1Code=1050; + $dir1Titre='Personne Physique'; + } + + $dateHexavia=initstr(preg_replace('/^00/','01',WDate::dateT('Y-m-d','dmY',$tabId['dateHexavia'])), 8, '0', ALIGN_RIGHT); + + $dateCreation=initstr(WDate::dateT('Y-m-d','dmY',preg_replace('/00$/','01',$tabId['dateCrea'])), 8, '0', ALIGN_RIGHT); + + if (!$dateJourCmd) { + if ($tabId['bilanMil']<=$anneeBilanVieux) { + // Aller vérifier s'il n'y a pas un bilan plus récent en base + $tmpBilan=$iDb2->select('jo.bilans_postes','FL, YEAR(dateExercice) AS annee', "siren=$siren AND consolide=0 ORDER BY dateExercice DESC LIMIT 0,1", false, MYSQL_ASSOC); + $tabTmpBil=$tmpBilan[0]; + $bilAnnee=$tabTmpBil['annee']; + $bilFL=$tabTmpBil['FL']; + } else { + $bilAnnee=$tabId['bilanMil']; + $bilFL=$tabId['bilanFL']; + } + /* + Rajouter l'estimation de CA dans les cas suivants : + 1a. Quand il n'y a pas de bilan + OU 1b. Quand le bilan est trop vieux pour RRG soit (plus de 36 mois) + + De plus, on ne donne de CA Estimé que : + 2a. Si le NAF est valide (5 positions, différent de vide et de 0000Z) + 2b. Si l'effectif est > à 0 OU (effectif<1 ET CJ=1xxx) + 2c. Si la date de création >= date de clôture estimée (dernière jour de l'année courante - 2 ans) + + Attention, pour les créations récentes (nouvelle demande de RRG) : + 3a. Si le NAF est valide (5 positions, différent de vide et de 0000Z) + 3b. Si l'effectif est > à 0 OU (effectif<1 ET CJ=1xxx) + 3c. Si la date de création EST dans l'année en cours ou dans l'année précédente et pas de bilans REEL + ==> Alors donner le CA Estimé qui est donc "prévisionnel" au 31/12 de l'année en cours + */ + } else { + $bilAnnee=$tabId['bilanMil']; + $bilFL=$tabId['bilanFL']; + } + $strOut=initstr($tabId['id']*1, 10 , '0', ALIGN_RIGHT) .'$'. // Identification ORT de l'établissement ! + $tabId['siret'].'$'. // Numéro de SIRET + $tabId['source'].'$'. // Source de l'information (INS ou S&D) + trim(str_replace('$',' ',$tabId['rs'])).'$'. // Raison sociale Officielle de l'entreprise + $L1.'$'. // Raison sociale Postale de l'entreprise ! + $L1tr.'$'. // Indicateur si la RS postale a été tronquée ! + trim(str_replace('$',' ',$tabId['sigle'])).'$'. // Sigle de l'entreprise + trim(str_replace('$',' ',$tabId['ens'])).'$'. // Enseigne officielle de l'établissement + $L2.'$'. // Enseigne postale de l'établissement ! + $L2tr.'$'. // Indicateur si l'enseigne postale a été tronquée ! + $tabId['statut'].'$'. // Statut de l'établissement + $tabId['situ'].'$'. // Code situation de l'entreprise + $tabId['maj'].'$'. // Flag de Mise à jour de l'établissement ??? + $dateHexavia.'$'. // Date d'actualisation du fichier HEXAVIA + $hexaviaMat.'$'. // code voie HEXAVIA + $codCommune.'$'. // Code commune INSEE + $libCommune.'$'. // Libellé de la commune INSEE + $cp.'$'. // Code postal + $L3.'$'. // Complément d'adresse + $adrNum1.'$'. // Numéro dans la voie + $adrBtq1.'$'. // Lettre dans la voie + $adrNum2.'$'. // Numéro dans la voie 2 + $adrBtq2.'$'. // Lettre dans la voie 2 + $hexaviaVoie.'$'. // Libellé dans la voie + $L5.'$'. // Distribution postale + $L5.'$'. // Complément postal + $achPost.'$'. // Acheminement postal (spécificité RRG : Pas de CP) + $dateCreation.'$'. // Date de création de l'entreprise + 'J'.'$'. // Précision de la date de création + $tabId['fj'].'$'. // Code forme juridique + $tabId['fjLib'].'$'. // Libellé forme juridique + $tabId['nafEn'].'$'. // Code NAF Entreprise + $tabId['nafEnLib'].'$'. // Libellé du NAF Entreprise + $tabId['nafEt'].'$'. // Code NAF Etablissement + $tabId['nafEtLib'].'$'. // Libellé du NAF Etablissement + $tel.'$'. // Numéro de téléphone + $civ.'$'. // Civilité du principal dirigeant + $dir1Nom.'$'. // Nom du principal dirigeant + $dir1Prenom.'$'. // Prénom du principal dirigeant + $dir1Code.'$'. // Code Fonction du principal dirigeant ??? + $dir1Titre.'$'. // Libellé de la fonction ??? + initstr($bilAnnee, 4, '0',ALIGN_RIGHT).'$'. // Année du dernier exercice + $bilFL.'$'. // CA du dernier exercice + $tabId['effEn'].'$'. // Effectif de l'entreprise + $tabId['effEt'].'$'. // Effectif de l'établissement + initstr($tabId['nicSiege']*1, 5, '0', ALIGN_RIGHT).'$'. // Numéro NIC de l'établissement principal + $tabId['even'].'$'. // Code jugement ??? + $tabId['evenLib'].'$'. // Libellé code Jugement ??? + $vatNumber.'$'. // N° TVA intracommunautaire + $mail.'$'. // Adresse mail de l'entreprise + str_replace('00000000000000','', + initstr(@$tabAssoc['pre']['siren']*1, 9 , '0', ALIGN_RIGHT) . + initstr(@$tabAssoc['pre']['nic']*1, 5 , '0', ALIGN_RIGHT)) .'$'. + str_replace('00000000000000','', + initstr(@$tabAssoc['suc']['siren']*1, 9 , '0', ALIGN_RIGHT) . + initstr(@$tabAssoc['suc']['nic']*1, 5 , '0', ALIGN_RIGHT)) ; + //echo $strOut.EOL; + fwrite($fpOut, $strOut.EOL); + + echo "$iL/$nbEtab: $vatNumber $nic (".$tabId['source'].",".$tabId['maj'].") $L1\t$cp $achPost\t$hexaviaMat".EOL; + + if (!$dateJourCmd) { + $tabUpdate=array( 'rs' =>trim(str_replace('$',' ',$tabId['rs'])), + 'adrL1' =>$L1, + 'adrL1t'=>$L1tr, + 'sigle' =>trim(str_replace('$',' ',$tabId['sigle'])), + 'ens' =>trim(str_replace('$',' ',$tabId['ens'])), + 'adrL2' =>$L2, + 'adrL2t'=>$L2tr, + 'dateHexavia'=>$dateHexavia, + 'codVoieHexavia'=>$hexaviaMat, + 'codeInseeCom'=>$codCommune, + 'libInseeCom'=>$libCommune, + 'cpCom'=>$cp, + 'adrL3'=>$L3, + 'adrNum'=>$adrNum1, + 'adrBtq'=>$adrBtq1, + 'adrNum2'=>$adrNum2, + 'adrBtq2'=>$adrBtq2, + 'adrLibVoie'=>$hexaviaVoie, + 'adrDisp'=>$L5, + 'adrComp'=>$L5, + //'adrL6'=>$achPost, + 'tel'=>$tel, + 'dirCiv'=>$civ, + 'dirNom'=>$dir1Nom, + 'dirPrenom'=>$dir1Prenom, + 'dirFctCode'=>$dir1Code, + 'dirFctLib'=>$dir1Titre, + 'bilanMil'=>$bilAnnee, + 'bilanFL'=>$bilFL, + //'effEn'=>, + //'even'=>, + //'evenLib'=>, + 'tva'=>$vatNumber, + 'email'=>$mail, + 'siretPre'=>initstr(@$tabAssoc['pre']['siren']*1, 9 , '0', ALIGN_RIGHT). + initstr(@$tabAssoc['pre']['nic']*1, 5 , '0', ALIGN_RIGHT), + 'siretSuc'=>initstr(@$tabAssoc['suc']['siren']*1, 9 , '0', ALIGN_RIGHT). + initstr(@$tabAssoc['suc']['nic']*1, 5 , '0', ALIGN_RIGHT), + 'dateUpdate'=>$dateDeb, + ); + $iDb2->update('diffusionRRG', $tabUpdate, "idLine=$idLine", false); + } + //print_r($tabId); + //die(); +} +fclose($fpOut); +$message.=date('Y/m/d - H:i:s') ." - Fin du traitement RRG : export de $iL/$nbEtab établissements.".EOL; +echo date('Y/m/d - H:i:s') ." - Fin du traitement RRG : export de $iL/$nbEtab établissements.".EOL; + +if ($mailSuivi) { + if (!copy(REP_TEMP.$fileName, NEWCLIENTS_PATH.'rrg/recv/'.$fileName)) + $msgLine=date ('Y/m/d - H:i:s')." - ERREUR : Déplacement du fichier $fileName impossible pour le spécifique RRG !".EOL; + else + $msgLine=date ('Y/m/d - H:i:s')." - Le fichier $fileName a été créé pour RRG...".EOL; + echo $msgLine; + $message.=$msgLine; + unset($iDb); + $iDb=new WDb('sdv1'); + $tabRRG=array( 'client' => 'rrg', + 'name' => 'HEXAVIA', + 'nbLines' => $iL, // Nombre de ligne + 'dateBegin' => $dateDeb, // Date de début de traitement au format YmdHis + 'dateEnd' => date('YmdHis'), // Date de fin de traitement au format YmdHis + 'fileOut' => $fileName, // Nom du fichier sans le chemin + 'depotType' => 'FTP', + 'depotDate' => '0000-00-00 00:00:00'); + $iDb->insert('flux_fileout', $tabRRG, false); + + @sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', "Prestation RRG", $message); +} + +unlink(REP_TEMP.basename($scriptName).'.lock'); + +die(); + ?> \ No newline at end of file diff --git a/bin/geoCodeAdresses.php b/bin/geoCodeAdresses.php new file mode 100644 index 00000000..f8c3d3db --- /dev/null +++ b/bin/geoCodeAdresses.php @@ -0,0 +1,235 @@ +#!/usr/bin/php + +Chargement du/des flux quotidiens en provenance de Insee. + +Options : + -v Mode debug (Verbosité au maximum) + -d=20080430 Réappliquer les évènements depuis cette date + -f=20091230 Réappliquer les évènements jusqu'à cette date + -q Traiter le dernier flux Insee (Quotidien) + -h Traiter les flux historiques Insee + -l Traiter les conversions Lamberts + -a Traiter les altitudes +"; + $iDb=new WDB('insee'); + $iInsee=new MInsee(); + $imap=new MMap(); + + $nbSiretInvalides=$nbErreurs=$nbInsert=$nbUpdate= + $nbLignes=$nbEnCache=$nbDistant=0; + $modeDebug=$dateReprise=$dateFin=false; + $doQuotidien=$doHisto=$doLamberts=$doAltitudes=false; + + //Initialistation des variables + $argv=$_SERVER['argv']; + //if ($_SERVER['argc']==1) die("Non géré pour l'instant : chargera les derniers fichiers EVEN non chargés !".EOL); + + for ($i=1,$j=0; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (substr($argv[$i],1,1)) { + case 'v': $modeDebug=true; break; + case 'd': $dateReprise=substr($argv[$i],3,8); break; + case 'f': $dateFin =substr($argv[$i],3,8); break; + case 'q': $doQuotidien=true; break; + case 'h': $doHisto =true; break; + case 'l': $doLamberts =true; break; + case 'a': $doAltitudes=true; break; + case '-': + case '?': die($strInfoScript); break; + default: die('Option '. $argv[$i] . " inconnue !\n"); + } + } else $tabFichier[]=$argv[$i]; + } + if (!$doQuotidien && !$doHisto && !$doLamberts && !$doAltitudes) + $doQuotidien=$doHisto=$doLamberts=$doAltitudes=true; + +if ($doQuotidien) { + echo date ('Y/m/d - H:i:s') . " - Début du traitement de géocodage des adresses INSEE".EOL; + + $db_table='insee_even'; + $ret=$iDb->select($db_table, 'MAX(idFlux) as idFlux', "1"); + $idFluxFin=$ret[0]['idFlux']; + echo date ('Y/m/d - H:i:s')." - Le dernier flux INSEE géocodé est le flux $idFluxFin !".EOL; + if (!$dateReprise) { + $idFlux=$idFluxFin; + $idFlux3=(substr($idFlux,0,4)*1)-3; + $idFlux3=''.$idFlux3.substr($idFlux,4,6); + } + else { + if (!$dateFin) $dateFin=strtr($idFluxFin, array('-'=>'')); + $idFlux=WDate::dateT('Ymd', 'Y-m-d', $dateReprise); + $idFluxFin=WDate::dateT('Ymd', 'Y-m-d', $dateFin); + echo date ('Y/m/d - H:i:s')." - On réapplique le géocodage du flux $idFlux au $idFluxFin !".EOL; + } + + $nbLignes=$nbEnCache=$nbDistant=$nbAlt=0; + $nbLoaded=$iDb->select($db_table, 'insL4_VOIE, insNUMVOIE, insINDREP, insTYPVOIE, insLIBVOIE, insCODPOS, insLIBCOM, insDEPCOM, insCODEVOIE, insL7_ETRG, idFlux', "idFlux BETWEEN '$idFlux' AND '$idFluxFin'", false, MYSQL_ASSOC, true); + //$nbLoaded=$iDb->select('jo.etablissements_act', "'' AS insL4_VOIE, adr_num AS insNUMVOIE, adr_btq AS insINDREP, adr_typeVoie AS insTYPVOIE, adr_libVoie AS insLIBVOIE, adr_cp AS insCODPOS, adr_ville AS insLIBCOM, CONCAT(adr_dep*1,adr_com) AS insDEPCOM, rivoli AS insCODEVOIE, '' AS insL7_ETRG, '2012-02-13' AS idFlux", "adr_dep IN (/*03,*/18,23,28,36,37,41,43,44,45,49,53,58,63,69,71,72,79,86,87) AND adr_libVoie<>'' GROUP BY adr_num, adr_btq, adr_typeVoie, adr_libVoie, adr_cp, adr_ville", false, MYSQL_ASSOC, true); + echo date ('Y/m/d - H:i:s')." - Il y a $nbLoaded adresses à mettre à jour...".EOL; + $message='Le '.date('d/m/Y H:i:s')." : $nbLoaded adresses à géocoder".EOL; + //die(mysql_error().EOL); + $tabGeocodeur=array(); + while($adr=$iDb->fetch(MYSQL_ASSOC)) { + $nbLignes++; + if (trim($adr['insL7_ETRG'])=='') $pays='France'; + else $pays=trim($adr['insL7_ETRG']); + $codeRivoli=$adr['insDEPCOM'].$adr['insCODEVOIE']; + $geo=$imap->geoCodeAdresse($adr['insNUMVOIE'], $adr['insINDREP'], $adr['insTYPVOIE'], $adr['insTYPVOIE'], $adr['insLIBVOIE'], $adr['insCODPOS'], $adr['insLIBCOM'], $pays, $codeRivoli); + echo "$nbLignes/$nbLoaded:".$adr['idFlux'].','.$imap->enCache.':'.$imap->latitudeDec.','.$imap->longitudeDec.' ('.$imap->altitude.' m., p='.$imap->precision.")\t"; + echo $adr['insL4_VOIE'].', '.$adr['insCODPOS'].' '.$adr['insLIBCOM'].', '.$pays. ' => '; + echo $imap->adresseValidee.' ('.$imap->geocodeur.')'.EOL; + if ($modeDebug && $imap->enCache==0) + echo "Code Retour Google = '".$imap->codeRetourG."', Yahoo='".$imap->codeRetourY."', Mappy='".$imap->codeRetourM."'".EOL; + + @$tabGeocodeur[$imap->geocodeur][$imap->enCache]++; + if ($imap->enCache==true) $nbEnCache++; + if ($imap->altitude<>NULL) $nbAlt++; + else { + $nbDistant++; + usleep(100); + } + } + + $pct=round($nbEnCache/$nbLignes,3)*100; + $pct2=round($nbAlt/$nbLignes,3)*100; + + $message.='Le '.date('d/m/Y H:i:s')." : $nbLignes adresses géocodées du $idFlux au $idFluxFin dont $nbDistant par accès partenaire ($nbEnCache adresses en cache soit $pct %)".EOL; + $message.="$nbAlt adresses ont une altitude connue soit $pct2 %".EOL; + $message.=print_r($tabGeocodeur,true); + + sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du traitement de géocodage ($idFlux)", $message); +} + +if ($doHisto) { + /** Déb à supprimer HISTO : quand l'historique du géocodage sera complet + **/ + $nbLignes=$nbEnCache=$nbDistant=$nbAlt=0; + $nbLoaded=$iDb->select($db_table, 'insL4_VOIE, insNUMVOIE, insINDREP, insTYPVOIE, insLIBVOIE, insCODPOS, insLIBCOM, insDEPCOM, insCODEVOIE, insL7_ETRG, idFlux', "idFlux='$idFlux3'", false, MYSQL_ASSOC, true); + echo date ('Y/m/d - H:i:s')." - Il y a $nbLoaded adresses à mettre à jour...".EOL; + $message='Le '.date('d/m/Y H:i:s')." : $nbLoaded adresses à géocoder".EOL; + $tabGeocodeur=array(); + while($adr=$iDb->fetch(MYSQL_ASSOC)) { + $nbLignes++; + if (trim($adr['insL7_ETRG'])=='') $pays='France'; + else $pays=trim($adr['insL7_ETRG']); + $codeRivoli=$adr['insDEPCOM'].$adr['insCODEVOIE']; + $geo=$imap->geoCodeAdresse($adr['insNUMVOIE'], $adr['insINDREP'], $adr['insTYPVOIE'], $adr['insTYPVOIE'], $adr['insLIBVOIE'], $adr['insCODPOS'], $adr['insLIBCOM'], $pays, $codeRivoli); + echo $adr['idFlux'].','.$imap->enCache.':'.$imap->latitudeDec.','.$imap->longitudeDec.' ('.$imap->precision.")\t"; + echo $adr['insL4_VOIE'].', '.$adr['insCODPOS'].' '.$adr['insLIBCOM'].', '.$pays. ' => '; + echo $imap->adresseValidee.' ('.$imap->geocodeur.')'.EOL; + @$tabGeocodeur[$imap->geocodeur][$imap->enCache]++; + if ($imap->enCache==true) $nbEnCache++; + else { + $nbDistant++; + usleep(100); + } + } + $pct=round($nbEnCache/$nbLignes,3)*100; + $pct2=round($nbAlt/$nbLignes,3)*100; + + $message.='Le '.date('d/m/Y H:i:s')." : $nbLignes adresses géocodées en histo pour le $idFlux3 dont $nbDistant par accès partenaire ($nbEnCache adresses en cache soit $pct %)".EOL; + $message.="$nbAlt adresses ont une altitude connue soit $pct2 %".EOL; + $message.=print_r($tabGeocodeur,true); + + sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du traitement de géocodage Histo ($idFlux3)", $message); + /** Fin à supprimer HISTO **/ +} + +if ($doAltitudes) { + /** Déb à supprimer ALTITUDE : quand toutes les adresses seront altimétriques + **/ + $nbLignes=$nbEnCache=$nbDistant=$nbAlt=0; + $nbLoaded=$iDb->select('jo.zonageXY', "address AS insL4_VOIE, adrNum AS insNUMVOIE, adrIndRep AS insINDREP, adrTypeVoie AS insTYPVOIE, adrLibVoie AS insLIBVOIE, adr_cp AS insCODPOS, adr_ville AS insLIBCOM, + SUBSTRING(rivoli,1,5) AS insDEPCOM, SUBSTRING(rivoli,6,5) AS insCODEVOIE, '' AS insL7_ETRG, 0 AS idFlux", "alt IS NULL AND precis>4 LIMIT 80000,40000", false, MYSQL_ASSOC, true); + echo date ('Y/m/d - H:i:s')." - Il y a $nbLoaded adresses sans altitude à mettre à jour...".EOL; + $message='Le '.date('d/m/Y H:i:s')." : $nbLoaded adresses sans altitude".EOL; + $tabGeocodeur=array(); + while($adr=$iDb->fetch(MYSQL_ASSOC)) { + $nbLignes++; + if (trim($adr['insL7_ETRG'])=='') $pays='France'; + else $pays=trim($adr['insL7_ETRG']); + $codeRivoli=$adr['insDEPCOM'].$adr['insCODEVOIE']; + $geo=$imap->geoCodeAdresse($adr['insNUMVOIE'], $adr['insINDREP'], $adr['insTYPVOIE'], $adr['insTYPVOIE'], $adr['insLIBVOIE'], $adr['insCODPOS'], $adr['insLIBCOM'], $pays, $codeRivoli); + echo $adr['idFlux'].','.$imap->enCache.':'.$imap->latitudeDec.','.$imap->longitudeDec.' ('.$imap->precision.") ".$imap->altitude." m.\t"; + echo $adr['insL4_VOIE'].', '.$adr['insCODPOS'].' '.$adr['insLIBCOM'].', '.$pays. ' => '; + echo $imap->adresseValidee.' ('.$imap->geocodeur.')'.EOL; + @$tabGeocodeur[$imap->geocodeur][$imap->enCache]++; + if ($imap->enCache==true) $nbEnCache++; + else { + $nbDistant++; + usleep(100); + } + } + $pct=round($nbEnCache/$nbLignes,3)*100; + $pct2=round($nbAlt/$nbLignes,3)*100; + + $message.='Le '.date('d/m/Y H:i:s')." : $nbLignes adresses sans altitude dont $nbDistant par accès partenaire ($nbEnCache adresses en cache soit $pct %)".EOL; + $message.="$nbAlt adresses ont une altitude connue soit $pct2 %".EOL; + $message.=print_r($tabGeocodeur,true); + + sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du traitement de géocodage/altitude", $message); + /** Fin à supprimer ALTITUDE **/ +} + +if ($doLamberts) { + /** Déb à supprimer LAMBERT : quand toutes les adresses seront aussi stockées en lambert 93 **/ + unset ($imap); + $imap=new MMap(false); + $iDb2=new WDB('jo'); + $nbLignes=$nbEnCache=$nbDistant=$nbAlt=0; + $nbLoaded=$iDb->select('jo.zonageXY', "address AS insL4_VOIE, adrNum AS insNUMVOIE, adrIndRep AS insINDREP, adrTypeVoie AS insTYPVOIE, adrLibVoie AS insLIBVOIE, adr_cp AS insCODPOS, adr_ville AS insLIBCOM, SUBSTRING(rivoli,1,5) AS insDEPCOM, SUBSTRING(rivoli,6,5) AS insCODEVOIE, '' AS insL7_ETRG, 0 AS idFlux", "l93_x IS NULL OR l93_y IS NULL", false, MYSQL_ASSOC, true); + echo date ('Y/m/d - H:i:s')." - Il y a $nbLoaded adresses sans Lambert 93 à mettre à jour...".EOL; + $message='Le '.date('d/m/Y H:i:s')." : $nbLoaded adresses sans Lambert 93".EOL; + $tabGeocodeur=array(); + while($adr=$iDb->fetch(MYSQL_ASSOC)) { + $nbLignes++; + if (trim($adr['insL7_ETRG'])=='') $pays='France'; + else $pays=trim($adr['insL7_ETRG']); + $codeRivoli=$adr['insDEPCOM'].$adr['insCODEVOIE']; + $geo=$imap->geoCodeAdresse($adr['insNUMVOIE'], $adr['insINDREP'], $adr['insTYPVOIE'], $adr['insTYPVOIE'], $adr['insLIBVOIE'], $adr['insCODPOS'], $adr['insLIBCOM'], $pays, $codeRivoli); + echo $adr['idFlux'].','.$imap->enCache.':'.$imap->latitudeDec.','.$imap->longitudeDec.' ('.$imap->precision.")\t"; + echo $adr['insL4_VOIE'].', '.$adr['insCODPOS'].' '.$adr['insLIBCOM'].', '.$pays. ' => '; + echo $imap->adresseValidee.' ('.$imap->geocodeur.')'.EOL; + @$tabGeocodeur[$imap->geocodeur][$imap->enCache]++; + if ($imap->enCache==true) $nbEnCache++; + else { + $nbDistant++; + usleep(100); + } + // Conversion WGS84 en Lambert93 + $latitude=$imap->latitudeDec; + $longitude=$imap->longitudeDec; + $lambert=geos2lambert93($latitude,$longitude); + $x93=round($lambert['x_93']); + $y93=round($lambert['y_93']); + $tabUpdate=array('l93_x'=>$x93, 'l93_y'=>$y93); + $adresse=addslashes($adr['insL4_VOIE']); + $cp=$adr['insCODPOS']; + $ville=$adr['insLIBCOM']; + $iDb2->update('zonageXY', $tabUpdate, "address='$adresse' AND adr_cp='$cp' AND adr_ville='$ville' LIMIT 1"); + } + $pct=round($nbEnCache/$nbLignes,3)*100; + $pct2=round($nbAlt/$nbLignes,3)*100; + + $message.='Le '.date('d/m/Y H:i:s')." : $nbLignes adresses converties en Lambert 93 pour le $idFlux3 dont $nbDistant par accès partenaire ($nbEnCache adresses en cache soit $pct %)".EOL; + $message.="$nbAlt adresses ont une altitude connue soit $pct2 %".EOL; + $message.=print_r($tabGeocodeur,true); + + sendMail('webmaster@scores-decisions.com', 'ylenaour@scores-decisions.com', "Fin du traitement de géocodage en Lambert 93", $message); + /** Fin à supprimer LAMBERT **/ +} + + die(); + ?> \ No newline at end of file diff --git a/bin/getAdressesSources.php b/bin/getAdressesSources.php new file mode 100644 index 00000000..ec780100 --- /dev/null +++ b/bin/getAdressesSources.php @@ -0,0 +1,865 @@ +#!/usr/bin/php +array('lib'=>'LEI Registered', + 'db'=>'sdv1', + 'table'=>'bourse_lei', + 'zones'=>"100 AS source, id AS source_id, 0 AS num, + RegisteredName AS L1in, MappedRegisteredName AS L2in, RegisteredAddress2 AS L3in, RegisteredAddress1 AS L4in, + CONCAT(RegisteredAddress3,' ', RegisteredAddress4) AS L5in, CONCAT(RegisteredPostalCode,' ',RegisteredCity) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"RegisteredName<>'' AND RegisteredAddress1<>'' AND RegisteredCity<>'' AND RegisteredCountryCode='FR' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=100 AND num=0),0)", + 'go'=>0, + 'idSrc'=>100), + 'leiHead'=>array('lib'=>'LEI Headquarters', + 'db'=>'sdv1', + 'table'=>'bourse_lei', + 'zones'=>"100 AS source, id AS source_id, 1 AS num, + RegisteredName AS L1in, HeadquarterAddress2 AS L2in, HeadquarterAddress3 AS L3in, HeadquarterAddress1 AS L4in, + HeadquarterAddress4 AS L5in, CONCAT(HeadquarterPostalCode,' ',HeadquarterCity) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"RegisteredName<>'' AND HeadquarterAddress1<>'' AND HeadquarterCity<>'' AND HeadquarterCountryCode='FR' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=100 AND num=1),0)", + 'go'=>0, + 'idSrc'=>100), + 'bompadm'=>array('lib'=>'Administrations du BOAMP', + 'db'=>'jo', + 'table'=>'boamp_detail', + 'zones'=>"140 AS source, id AS source_id, 0 AS num, + raisonSociale AS L1in, '' AS L2in, '' AS L3in, adresse AS L4in, + '' AS L5in, CONCAT(cp,' ',ville) AS L6in, pays AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"raisonSociale<>'' AND adresse<>'' AND ville<>'' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=140 AND num=0),0)", + 'go'=>1, + 'notBetween'=>'10:00-18:00', + 'idSrc'=>140), + 'bompent'=>array('lib'=>'Entreprises du BOAMP', + 'db'=>'jo', + 'table'=>'boamp_lots', + 'zones'=>"140 AS source, id AS source_id, 1 AS num, + nom AS L1in, '' AS L2in, '' AS L3in, adresse AS L4in, + '' AS L5in, CONCAT(cp,' ',ville) AS L6in, pays AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"nom<>'' AND adresse<>'' AND ville<>'' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=140 AND num=1),0)", + 'go'=>1, + 'notBetween'=>'10:00-18:00', + 'idSrc'=>140, + 'idNum'=>1), + 'greffes'=>array('lib'=>'Entreprises Infogreffe', + 'db'=>'jo', + 'table'=>'greffes_identite', + 'zones'=>"4 AS source, id AS source_id, 0 AS num, + nom AS L1in, nomCommercial AS L2in, '' AS L3in, adresse AS L4in, + adresse2 AS L5in, CONCAT(cp,' ',ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"nom<>'' AND adresse<>'' AND ville<>'' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=4 AND num=0),0)", + 'go'=>1, + 'idSrc'=>4), + 'liens'=>array('lib'=>'Entreprises LiensRef', + 'db'=>'jo', + 'table'=>'liensRef', + 'zones'=>"7 AS source, id AS source_id, 0 AS num, + RS AS L1in, '' AS L2in, '' AS L3in, CONCAT(adresse_num,' ',adresse_btq,' ',adresse_codvoie,' ',adresse_libvoie) AS L4in, + adresse_comp AS L5in, CONCAT(adresse_cp,' ',adresse_ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"id>999 AND sirenValide=0 AND RS<>'' AND adresse_libvoie<>'' AND adresse_ville<>'' AND adresse_pays='FRA' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=7 AND num=0),0)", + 'go'=>1, + 'idSrc'=>7), + 'rncsjug1'=>array('lib'=>'Jugements RNCS - Mandataire 1', + 'db'=>'jo', + 'table'=>'rncs_jugements', + 'zones'=>"24 AS source, id AS source_id, 0 AS num, + adm1nom AS L1in, '' AS L2in, adm1adr2 AS L3in, adm1adr1 AS L4in, + adm1adr3 AS L5in, CONCAT(adm1adrCP,' ',adm1adrVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"adm1nom<>'' AND adm1adr1<>'' AND adm1adrVille<>'' AND adm1type<>'' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=24 AND num=0),0)", + 'go'=>1, + 'idSrc'=>24), + 'rncsjug2'=>array('lib'=>'Jugements RNCS - Mandataire 2', + 'db'=>'jo', + 'table'=>'rncs_jugements', + 'zones'=>"24 AS source, id AS source_id, 1 AS num, + adm2nom AS L1in, '' AS L2in, adm2adr2 AS L3in, adm2adr1 AS L4in, + adm2adr3 AS L5in, CONCAT(adm2adrCP,' ',adm2adrVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"adm2nom<>'' AND adm2adr1<>'' AND adm2adrVille<>'' AND adm2type<>'' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=24 AND num=1),0)", + 'go'=>1, + 'idSrc'=>24, + 'idNum'=>1), + 'rncsetab'=>array('lib'=>'Etablissements RNCS actifs', + 'db'=>'jo', + 'table'=>'rncs_etab e, rncs_entrep p', + 'zones'=>"5 AS source, id AS source_id, 0 AS num, + p.raisonSociale AS L1in, IF(e.nomCommercial<>'',e.nomCommercial,e.enseigne) AS L2in, '' AS L3in, CONCAT(e.adrNumVoie,' ',e.adrIndRep,' ',e.adrTypeVoie,' ',e.adrVoie) AS L4in, + e.adrComp AS L5in, CONCAT(e.cp,' ',e.commune) AS L6in, '' AS L7in, e.dateInsert*1 AS dateInsert", + 'where'=>"p.raisonSociale <>'' AND e.adrVoie<>'' AND e.commune<>'' AND e.siren=p.siren AND e.siege>=0 AND p.actif=1 AND e.actif=1 + AND e.dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=5),0)", + 'go'=>1, + 'idSrc'=>24), + 'clients'=>array('lib'=>'Sirenage Clients', + 'db'=>'jo', + 'table'=>'sirenage_clients', + 'zones'=>"190 AS source, id AS source_id, 0 AS num, + nom AS L1in, enseigne AS L2in, adresse2 AS L3in, adresse1 AS L4in, + CONCAT(adresse3,' ',adresse4) AS L5in, CONCAT(cp,' ',ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"nom<>'' AND (adresse1<>'' OR adresse2<>'' OR adresse3<>'' OR adresse4<>'') AND ville<>'' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=190 AND num=0),0)", + 'go'=>1, + 'idSrc'=>190), + 'mand'=>array('lib'=>'Mandataires', + 'db'=>'jo', + 'table'=>'tabMandataires', + 'zones'=>"176 AS source, id AS source_id, 0 AS num, + CONCAT(Nom,' ',Prenom) AS L1in, '' AS L2in, '' AS L3in, adresse AS L4in, + adresseComp AS L5in, CONCAT(cp,' ',ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"Nom<>'' AND adresse<>'' AND ville<>'' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=176),0)", + 'go'=>1, + 'idSrc'=>176), + 'asso1'=>array( 'lib'=>'Associations', + 'db'=>'jo', + 'table'=>'asso', + 'zones'=>"3 AS source, id AS source_id, 0 AS num, + Assoc_Nom AS L1in, '' AS L2in, '' AS L3in, Assoc_Adresse AS L4in, + Assoc_AdrComp AS L5in, CONCAT(Assoc_AdrCP,' ',Assoc_AdrVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"Assoc_Nom<>'' AND Assoc_Adresse<>'' AND Assoc_AdrVille<>'' AND Type_Annonce NOT LIKE '%Dissolution%' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=3 AND num=0),0)", + 'go'=>1, + 'idSrc'=>3, + 'idNum'=>0), + 'asso2'=>array( 'lib'=>'Associations (Déménagements)', + 'db'=>'jo', + 'table'=>'asso', + 'zones'=>"3 AS source, id AS source_id, 1 AS num, + Assoc_Nom AS L1in, '' AS L2in, '' AS L3in, Assoc_NAdresse AS L4in, + '' AS L5in, '' AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"Assoc_Nom<>'' AND Assoc_NAdresse<>'' AND Type_Annonce NOT LIKE '%Dissolution%' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=3 AND num=1),0)", + 'go'=>1, + 'splitterL4'=>1, // Toute l'adresse est comprise dans la ligne 4 + 'idSrc'=>3, + 'idNum'=>1), + 'jal'=>array( 'lib'=>'Annonces en Collecte', + 'db'=>'jo', + 'table'=>'annonces', + 'zones'=>"8 AS source, id AS source_id, 0 AS num, + raisonSociale AS L1in, '' AS L2in, '' AS L3in, adresse AS L4in, + '' AS L5in, CONCAT(codePostal,' ',ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"raisonSociale<>'' AND adresse<>'' AND ville<>'' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=8),0)", + 'go'=>1, + 'notBetween'=>'10:00-18:00', + 'idSrc'=>8), + 'insee'=>array( 'lib'=>'Etablissements actifs de l\'Insee', + 'db'=>'insee', + 'table'=>'insee.identite', + 'zones'=>"2 AS source, id AS source_id, 0 AS num, + insL1_NOMEN AS L1in, insL2_COMP AS L2in, insL3_CADR AS L3in, insL4_VOIE AS L4in, + insL5_DISP AS L5in, insL6_POST AS L6in, insL7_ETRG AS L7in, dateUpdate*1 AS dateInsert", + 'where'=>"insL1_NOMEN<>'' AND insL4_VOIE<>'' AND insL6_POST<>'' AND ACTIF=1 + /*AND id NOT IN (SELECT source_id FROM villes.rnvpSources WHERE source=2)*/ + AND dateUpdate>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=2),0)", + 'go'=>1, + 'idSrc'=>2), + 'tourisme'=>array('lib'=>'Hotels/Campings', + 'db'=>'jo', + 'table'=>'tourisme', + 'zones'=>"200 AS source, id AS source_id, 0 AS num, + nom AS L1in, '' AS L2in, '' AS L3in, adresse AS L4in, + '' AS L5in, CONCAT(adrCp,' ',adrVille) AS L6in, '' AS L7in, dateUpdate*1 AS dateInsert", + 'where'=>"nom<>'' AND adresse<>'' AND adrVille<>'' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=200),0)", + 'go'=>1, + 'idSrc'=>200), + + 'bodacc0'=>array('lib'=>'Bodacc', + 'db'=>'jo', + 'table'=>'bodacc_detail', + 'zones'=>"1 AS source, id AS source_id, 0 AS num, + raisonSociale AS L1in, enseigne AS L2in, nomCommercial AS L3in, adresse AS L4in, + '' AS L5in, CONCAT(codePostal,' ',ville) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"raisonSociale<>'' AND adresse<>'' AND codePostal>0 AND ville<>'' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=0),0)", + 'go'=>1, + 'notBetween'=>'10:00-18:00', + 'idSrc'=>1, + 'idNum'=>0), + 'bodacc1'=>array('lib'=>'Bodacc (Sièges)', + 'db'=>'jo', + 'table'=>'bodacc_detail', + 'zones'=>"1 AS source, id AS source_id, 1 AS num, + raisonSociale AS L1in, enseigne AS L2in, nomCommercial AS L3in, adresseSiege AS L4in, + '' AS L5in, CONCAT(codePostalSiege,' ',villeSiege) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"raisonSociale<>'' AND adresseSiege<>'' AND codePostalSiege>0 AND villeSiege<>'' + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=1),0)", + 'go'=>1, + 'notBetween'=>'10:00-18:00', + 'idSrc'=>1, + 'idNum'=>1), + 'bodacc2'=>array('lib'=>'Bodacc (Mandataires)', + 'db'=>'jo', + 'table'=>'bodacc_detail', + 'zones'=>"1 AS source, id AS source_id, 2 AS num, + mandNom AS L1in, mandRepr AS L2in, Mandataire AS L3in, mandAdresse AS L4in, + '' AS L5in, CONCAT(mandCP,' ',mandVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"Mandataire<>'' AND mandAdresse<>'' AND mandCP>0 + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=2),0)", + 'go'=>1, + 'notBetween'=>'10:00-18:00', + 'idSrc'=>1, + 'idNum'=>2), + 'bodacc3'=>array('lib'=>'Bodacc (ReprCreanciers)', + 'db'=>'jo', + 'table'=>'bodacc_detail', + 'zones'=>"1 AS source, id AS source_id, 3 AS num, + creaNom AS L1in, creaRepr AS L2in, ReprCreanciers AS L3in, creaAdresse AS L4in, + '' AS L5in, CONCAT(creaCP,' ',creaVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"ReprCreanciers<>'' AND creaAdresse<>'' AND creaCP>0 + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=3),0)", + 'go'=>1, + 'notBetween'=>'10:00-18:00', + 'idSrc'=>1, + 'idNum'=>3), + 'bodacc4'=>array('lib'=>'Bodacc (Administrateurs)', + 'db'=>'jo', + 'table'=>'bodacc_detail', + 'zones'=>"1 AS source, id AS source_id, 4 AS num, + admNom AS L1in, admRepr AS L2in, administrateur AS L3in, admAdresse AS L4in, + '' AS L5in, CONCAT(admCP,' ',admVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"administrateur<>'' AND admAdresse<>'' AND admCP>0 + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=4),0)", + 'go'=>1, + 'notBetween'=>'10:00-18:00', + 'idSrc'=>1, + 'idNum'=>4), + 'bodacc5'=>array('lib'=>'Bodacc (Oppositions)', + 'db'=>'jo', + 'table'=>'bodacc_detail', + 'zones'=>"1 AS source, id AS source_id, 5 AS num, + oppoNom AS L1in, oppoRepr AS L2in, oppositions AS L3in, oppoAdresse AS L4in, + '' AS L5in, CONCAT(oppoCP,' ',oppoVille) AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"oppositions<>'' AND oppoAdresse<>'' AND oppoCP>0 + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=1 AND num=5),0)", + 'go'=>1, + 'notBetween'=>'10:00-18:00', + 'idSrc'=>1, + 'idNum'=>5), + 'rcMonaco'=>array('lib'=>'RC Monaco', + 'db'=>'tmp', + 'table'=>'rcMonaco', + 'zones'=>"30 AS source, id AS source_id, 0 AS num, + IF(rs='',nomPrenom,rs) AS L1in, etabEns AS L2in, ensAdr1 AS L3in, ensAdr2 AS L4in, ensAdr3 AS L5in, ensAdr4 AS L6in, '' AS L7in, dateInsert*1 AS dateInsert", + 'where'=>"(rs<>'' OR nomPrenom<>'') AND (ensAdr1 IS NOT NULL OR ensAdr2 IS NOT NULL OR ensAdr3 IS NOT NULL OR ensAdr4 IS NOT NULL) + AND dateInsert>IFNULL((SELECT MAX(dateInsert*1) FROM villes.rnvpSources WHERE source=30),0)", + 'go'=>1, + 'idSrc'=>30), + +/* 'qualifelec'=>array('lib'=>'Qualifelec', + 'db'=>'sdv1', + 'table'=>'qualifelec', + 'zones'=>"id, SUBSTRING(siret,1,9) AS siren, SUBSTRING(siret,10,5) AS nic, '' AS poste, mail, web, DATE(dateInsert)*1 AS dateInsert, tel, fax", + 'where'=>"siret>100000000 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')", + 'go'=>1, + 'idSrc'=>211), + 'qualipaysage'=>array('lib'=>'Qualipaysage', + 'db'=>'sdv1', + 'table'=>'qualipaysage', + 'zones'=>"id, SUBSTRING(siret,1,9) AS siren, SUBSTRING(siret,10,5) AS nic, '' AS poste, mail, web, DATE(dateInsert)*1 AS dateInsert, tel, fax", + 'where'=>"siret>100000000 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')", + 'go'=>1, + 'idSrc'=>212), + 'qualibat'=>array('lib'=>'Qualibat', + 'db'=>'sdv1', + 'table'=>'qualibat', + 'zones'=>"id, siren, NULL AS nic, '' AS poste, email AS mail, web, DATE(dateInsert)*1 AS dateInsert, + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(tel,')',''),'(',''),'-',''),' ',''),',',''),'.','') AS tel, + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(fax,')',''),'(',''),'-',''),' ',''),',',''),'.','') AS fax", + 'where'=>"siren>1000 AND recupTel=0 AND (tel<>'' OR fax<>'' OR email<>'' OR web<>'')", + 'go'=>1, + 'idSrc'=>213), + 'ecoartisan'=>array('lib'=>'EcoArtisan', + 'db'=>'sdv1', + 'table'=>'ecoartisan', + 'zones'=>"id, SUBSTRING(siret,1,9) AS siren, SUBSTRING(siret,10,5) AS nic, '' AS poste, mail, web, DATE(dateInsert)*1 AS dateInsert, + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(tel,')',''),'(',''),'-',''),' ',''),',',''),'.','') AS tel, + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(fax,')',''),'(',''),'-',''),' ',''),',',''),'.','') AS fax, + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(mob,')',''),'(',''),'-',''),' ',''),',',''),'.','') AS mob", + 'where'=>"siret>100000000 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mob<>'' OR mail<>'' OR web<>'')", + 'go'=>1, + 'idSrc'=>214), + 'finess'=>array('lib'=>'Finess', + 'db'=>'sante', + 'table'=>'finess', + 'zones'=>"id, SUBSTRING(SIRET,1,9) AS siren, SUBSTRING(SIRET,10,5) AS nic, '' AS poste, '' AS mail, '' AS web, DATE(NOW())*1 AS dateInsert, + REPLACE(REPLACE(REPLACE(REPLACE(Tel,'-',''),' ',''),',',''),'.','') AS tel, + REPLACE(REPLACE(REPLACE(REPLACE(Fax,'-',''),' ',''),',',''),'.','') AS fax", + 'where'=>"SIRET>1000 AND recupTel=0 AND (Tel<>'' OR Fax<>'')", + 'go'=>1, + 'idSrc'=>210), + 'cncc'=>array('lib'=>'CNCC', + 'db'=>'sdv1', + 'table'=>'tabCNCC', + 'zones'=>"id, siren, nic, '' AS poste, mail, web, dateInsert, + REPLACE(REPLACE(REPLACE(REPLACE(Tel,'-',''),' ',''),',',''),'.','') AS tel, + REPLACE(REPLACE(REPLACE(REPLACE(Fax,'-',''),' ',''),',',''),'.','') AS fax", + 'where'=>"siren>100 AND nic>9 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')", + 'go'=>1, + 'idSrc'=>300), + 'amf_mairies'=>array('lib'=>'AMFM', + 'db'=>'jo', + 'table'=>'villes', + 'zones'=>"id, siren, nic, '' AS poste, '' AS mail, web, dateMajAMF AS dateInsert, + REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel, + REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax", + 'where'=>"siren>100 AND nic>9 AND recupTel=0 AND (tel<>'' OR fax<>'' OR web<>'')", + 'go'=>1, + 'idSrc'=>400), + 'banatic'=>array('lib'=>'Banatic', + 'db'=>'insee', + 'table'=>'banatic_coor', + 'zones'=>"id, sirenGrp AS siren, NULL AS nic, '' AS poste, mail, web, dateInsert, + REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel, + REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax", + 'where'=>"sirenGrp>100 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')", + 'go'=>1, + 'idSrc'=>52), + 'infos_entrep'=>array('lib'=>'InfosEntrep', + 'db'=>'jo', + 'table'=>'infos_entrep', + 'zones'=>"id, siren, nic, '' AS poste, mail, web, dateUpdate AS dateInsert, + REPLACE(REPLACE(REPLACE(REPLACE(tel,'-',''),' ',''),',',''),'.','') AS tel, + REPLACE(REPLACE(REPLACE(REPLACE(fax,'-',''),' ',''),',',''),'.','') AS fax", + 'where'=>"siren>1000 AND recupTel=0 AND (tel<>'' OR fax<>'' OR mail<>'' OR web<>'')", + 'go'=>1, + 'idSrc'=>175),*/ + ); +//$tabZones=array('tel', 'fax', 'mob', 'mail', 'web', 'an8'); +$verbose=$noMail=$collecteAdr=$recupRnvp=$envoiRnvp=$envoiRnvpAll=$listeSrc=$sourceCollecteOnly=false; +$purgeFtp=30; // Purger les fichiers sur le FTP qui ont plus de X jours + +$tabFichiers=$tabFichiersCmd=array(); +$argv=$_SERVER['argv']; +if ($_SERVER['argc']>1) { + for ($i=1; isset($argv[$i]); $i++) { + if (substr($argv[$i],0,1)=='-') { + switch (substr($argv[$i],1,1)) { + case 'v': + $verbose=true; + break; + case 'm': + $noMail=true; + break; + case 'c': + $collecteAdr=true; + $sourceCollecteOnly=trim(substr($argv[$i],3)); + if ($sourceCollecteOnly=='') $sourceCollecteOnly=false; + //die($sourceCollecteOnly); + break; + case 'r': + $recupRnvp=true; + break; + case 'e': // Envoi des adresses à normaliser + case 's': // Renvoyer la source XXX en RNVP (non opérationnel) + case 'n': // Renvoyer toutes les adresses non traitées en RNVP + $envoiRnvp=true; + if (substr($argv[$i],1,1)=='s') { + $tmp=substr($argv[$i],3,strlen($argv[$i])-3); + $envoiSrc=@$tabSrc[$tmp]['idSrc']; + $envoiNum=@$tabSrc[$tmp]['idNum']*1; + if ($envoiSrc==0) die("Source '$tmp' inexistante !".EOL); + $nbAdrRnvp=20000000; + } elseif (substr($argv[$i],1,1)=='n') { + $nbAdrRnvp=1000000; + $envoiRnvpAll=true; + } + break; + case 'l': + $listeSrc=true; + break; + case '-': + case '?': + die($strInfoScript); + break; + default: + die('Option '. $argv[$i] . " inconnue !\n"); + break; + } + } + else { + $tabFichiersCmd[]=$argv[$i]; +// $envoiRnvp=true; + } +} +} else + $collecteAdr=$recupRnvp=$envoiRnvp=true; + +$iDb=new WDB('jo'); +$iDb2=new WDB('villes'); +$iInsee=new MInsee(); + +if ($listeSrc) { + foreach ($tabSrc as $codSrc=>$tabSrcDet) { + $idSrc=$tabSrcDet['idSrc']; + $nomSrc=$tabSrcDet['lib']; + $srcActive=$tabSrcDet['go']; + if($srcActive) echo "Actif\t"; + else echo "INACTIF\t"; + echo "n°$idSrc\t$codSrc\t$nomSrc".EOL; + } + die(); +} + +echo date('Y/m/d - H:i:s') ." - DEBUT du programme de RNVP...".EOL; + +if ($recupRnvp) { + echo date('Y/m/d - H:i:s') ." - Reception des adresses normalisées...".EOL; + $message=date('Y/m/d - H:i:s') ." - Début de réception des adresses normalisées.".EOL; + + $tDeb=microtime(1); + + $fc = ftp_connect(RNVP_FTP_HOST); + if (!$fc) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de se connecter à '".RNVP_FTP_HOST."' !". EOL); + $fl = ftp_login($fc, RNVP_FTP_LOGIN, RNVP_FTP_PASS); + if (!$fl) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de s'authentifier à '".RNVP_FTP_HOST."' !". EOL); + + // CHARGEMENT ET D'UN FICHIER + $contents = ftp_nlist($fc, RNVP_FTP_DIR_GET); + if ($contents) { + foreach($contents as $k => $server_file) { + $dwl=false; + $tailleDist = ftp_size($fc, $server_file); + $dateDist = ftp_mdtm($fc, $server_file); + $server_fileName=basename($server_file); + if (file_exists(RNVP_FTP_LOCALDIR . $server_fileName)) { + $dateLoc=filemtime(RNVP_FTP_LOCALDIR . $server_fileName); + $tailleLoc=filesize(RNVP_FTP_LOCALDIR . $server_fileName); + } + if ($tailleDist<>@$tailleLoc && + preg_match('/\.txt\.Rnvp\.(Rejets|20).*OK/i', $server_fileName) && substr($server_fileName,-5)<>'.flag') { + $tDeb = microtime(true); + if (ftp_get($fc, RNVP_FTP_LOCALDIR.basename($server_file), $server_file, FTP_BINARY)) { + $tFin = microtime(true); + $tDur = round($tFin-$tDeb,3); + $tailleDistKo=round($tailleDist/1024,1); + $tRatio=@round($tailleDistKo/$tDur,1); + echo date ('Y/m/d - H:i:s')." - Fichier distant $server_fileName téléchargé avec succès : $tailleDistKo Ko en $tDur sec. ($tRatio Ko/s)".EOL; + $message.=date('Y/m/d - H:i:s') ." - Fichier distant $server_fileName téléchargé avec succès : $tailleDistKo Ko en $tDur sec. ($tRatio Ko/s)".EOL; + $dwl=true; + } + } elseif (($tailleDist==@$tailleLoc && preg_match('/\.txt\.Rnvp\.(Rejets|20).*OK/i', $server_fileName)) || substr($server_fileName,-5)=='.flag') + $dwl=true; + + if ($dwl && date('Ymd',$dateDist)'.' && $filename<>'..' && preg_match('/\.txt\.Rnvp\.(Rejets|20).*OK/i', $filename)) + $tabFichiers[] = RNVP_FTP_LOCALDIR.$filename; + } + sort($tabFichiers); + + $tabPays=array(); + $tabTmp=$iDb2->select('jo.tabPays','codPays3, libPays', '1', false, MYSQL_ASSOC); + foreach($tabTmp as $i=>$tabTmp2) { + $tabPays[$tabTmp2['codPays3']]=$tabTmp2['libPays']; + } + $nbRows=count($tabTmp); + echo date('Y/m/d - H:i:s') ." - Il y a $nbRows pays en table...".EOL; + + + foreach ($tabFichiers as $iFic=>$filename) { + $nbUpdate=0; + if (file_exists(REP_TEMP.basename($filename).'.lock')) { + $tab2Tmp=explode(';',file_get_contents(REP_TEMP.basename($filename).'.lock')); + $date2Tmp=WDate::DateT('YmdHis', 'd/m/Y H:i:s',$tab2Tmp[0]); + $nbL2Tmp=$tab2Tmp[2]; + $nbLignesTot=trim($tab2Tmp[3]); + // fwrite($fpT, date('Ymd-His')."$fichier;$dateInsert;$nbLignes; + $messageLigne=date('Y/m/d - H:i:s')." - Le fichier n°$iFic ($filename) est en cours de chargement depuis le $date2Tmp ($nbL2Tmp/$nbLignesTot lignes chargées)...".EOL; + echo $messageLigne; + $message.=$messageLigne; + //if (!$stopSiErreur) { + sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com', 'Chargement Adresses RNVP - ERREUR !!!', $message); + continue; + //} + } + + $fp=fopen($filename, 'r'); + if ($fp) { + $nbLignes=$nbLignesTot=0; + + if (preg_match('/\.txt\.Rnvp\.(Rejets|20)(.*)\.OK/i', $filename, $matches)) { + // RNVP_SED_20141219_135641.txt.Rnvp.20141219142501062.OK + if ($matches[1]=='Rejets') { + $codeRetourRnvp='KO'; + $dateRetourRnvp=substr($matches[2],1,14); + } else { + $codeRetourRnvp='OK'; + $dateRetourRnvp='20'.substr($matches[2],0,12); + } + while (!feof($fp)) { + $a = fgets($fp, 4096); + $nbLignesTot++; + } + $nbLignesTot--; // On enlève la ligne d'entête + //if ($codeRetourRnvp<>'KO') { + + $ret2=$iDb2->select('villes.rnvpSources', 'COUNT(*) AS nb', "dateRetourRnvp=$dateRetourRnvp AND codeRetour='$codeRetourRnvp'", false, MYSQL_ASSOC); + $nbLignesBase=$ret2[0]['nb']*1; + if ($nbLignesTot>0 && $nbLignesBase>=floor($nbLignesTot*0.995)) { + if ($verbose) echo date('Y/m/d - H:i:s') ." - Le fichier '$codeRetourRnvp' à charger '".basename($filename)."' contient $nbLignesTot lignes et a déjà été chargé ($nbLignesBase lignes en base).".EOL; + fclose($fp); + continue; + } elseif ($nbLignesTot==0) { + if ($verbose) echo date('Y/m/d - H:i:s') ." - Le fichier '$codeRetourRnvp' à charger '".basename($filename)."' est vide !".EOL; + continue; + } else { + echo date('Y/m/d - H:i:s') ." - Le fichier '$codeRetourRnvp' à charger '".basename($filename)."' contient $nbLignesTot lignes".EOL; + $ratio=floor($nbLignesTot*0.995); + echo date('Y/m/d - H:i:s') ." - en base : $nbLignesBase lignes (rapport = $ratio).".EOL; + echo date('Y/m/d - H:i:s') ." - $nbLignesBase > $ratio ?".EOL; + if ($verbose) die(); + } + } else continue; + + //if ($codeRetourRnvp<>'KO') continue; + + echo date('Y/m/d - H:i:s') ." - Le fichier '$codeRetourRnvp' à charger '".basename($filename)."' contient $nbLignesTot lignes ($nbLignesBase déjà chargées).".EOL; + $message.=date('Y/m/d - H:i:s') ." - Le fichier '$codeRetourRnvp' à charger '".basename($filename)."' contient $nbLignesTot lignes ($nbLignesBase déjà chargées).".EOL; + rewind($fp); + $entete = fgets($fp, 4096); + + $tabEntete=explode("\t", $entete); + //echo $entete.EOL; + //print_r($tabEntete); + //die(); + while (!feof($fp)) { + /** Ajout/Maj des infos du verrou **/ + if ($nbLignes==0 || $nbLignes%100000==0) { + $fpT=fopen(REP_TEMP.basename($filename).'.lock', 'w'); + fwrite($fpT, date('YmdHis').";$filename;$nbLignes;$nbLignesTot".EOL); + fclose($fpT); + } + $nbLignes++; + //if ($nbLignes<$numReprise) continue; + $ligne = fgets($fp, 4096); + + $tabLigne=explode("\t", $ligne); + $tabUpdate=array('dateRetourRnvp'=>$dateRetourRnvp,'codeRetour'=>$codeRetourRnvp); + foreach ($tabLigne as $iCol=>$valeur) + $tabUpdate[trim($tabEntete[$iCol])]=$valeur; + + //print_r($tabUpdate); + unset($tabUpdate['Rang']); // => R010 + unset($tabUpdate['IdElfy']);// => 1010 + unset($tabUpdate['CMedia']); + + $tabUpdate['L1rnvp']=strtoupper($tabUpdate['TNP']); unset($tabUpdate['TNP']); + if (isset($tabUpdate['NOM_OUTPUT']) && $tabUpdate['L1rnvp']=='' && $tabUpdate['NOM_OUTPUT']<>'') + $tabUpdate['L1rnvp']=trim($tabUpdate['NOM_OUTPUT']); + unset($tabUpdate['NOM_OUTPUT']); + $tabUpdate['L2rnvp']=strtoupper($tabUpdate['CNom']); unset($tabUpdate['CNom']); + if (isset($tabUpdate['ENSEIGNE_OUTPUT']) && $tabUpdate['L2rnvp']=='' && $tabUpdate['ENSEIGNE_OUTPUT']<>'') + $tabUpdate['L2rnvp']=trim($tabUpdate['ENSEIGNE_OUTPUT']); + unset($tabUpdate['ENSEIGNE_OUTPUT']); + $tabUpdate['L3rnvp']=strtoupper($tabUpdate['CAdrs']); unset($tabUpdate['CAdrs']); + $tabUpdate['L4rnvp']=strtoupper($tabUpdate['Adrs']); unset($tabUpdate['Adrs']); + $tabUpdate['L5rnvp']=strtoupper($tabUpdate['LieuDit']); unset($tabUpdate['LieuDit']); + $tabUpdate['L6rnvp']=strtoupper($tabUpdate['CpVille']); unset($tabUpdate['CpVille']); + if ($tabUpdate['Pays']<>'' && $tabUpdate['Pays']<>'FRA') + $tabUpdate['L6rnvp']=strtoupper($tabPays[$tabUpdate['Pays']]); + + unset($tabUpdate['PAYS_OUTPUT']); + $id=$tabUpdate['REF_OUTPUT']; unset($tabUpdate['REF_OUTPUT']); + if ($id==0) continue; // Fin de fichier / Ligne vide + + /** Zones non renseignées (option non comprise) **/ + unset($tabUpdate['TDM']); + unset($tabUpdate['TourneeFacteur']); + unset($tabUpdate['Codageo_Iris']); + unset($tabUpdate['Codageo_X']); + unset($tabUpdate['Codageo_Y']); + unset($tabUpdate['Codageo_precision']); + unset($tabUpdate['Codageo_Cq']); + + unset($tabUpdate['StatAge']); + unset($tabUpdate['CivCourt']); + unset($tabUpdate['CivLong']); + unset($tabUpdate['Sex']); + unset($tabUpdate['Nom']); + unset($tabUpdate['Prenom']); + unset($tabUpdate['CQtnp']); + /** Zones inutiles, chronospace **/ + unset($tabUpdate['RSoc_Input']); + unset($tabUpdate['Ville38']); + unset($tabUpdate['LibDept']); + unset($tabUpdate['Prefecture']); + unset($tabUpdate['RegionAdministrative']); + + //echo "Mise à jour de l'id=$id ...".mysql_errno().' : '.mysql_error().EOL; + //print_r($tabUpdate); + + $ret2=$iDb2->update('rnvpSources', $tabUpdate, "id=$id", false, 1, true); + + if (!mysql_errno()) $nbUpdate++; + else { + print_r($tabUpdate); + echo "Erreur n°".mysql_errno()." lors de la mise à jour de la ligne id=$i (".mysql_error().")".EOL; + } + } + fclose($fp); + // Suppression du verrou + unlink(REP_TEMP.basename($filename).'.lock'); + + if (bzip2($filename,RNVP_BACKUP_DIR.basename($filename))) { + unlink($filename); + $messageLigne=date ('Y/m/d - H:i:s') . " - Le fichier n°$iFic ($filename) vient d'être historisé.".EOL; + echo $messageLigne; + $message.=$messageLigne; + } + + $message.=date('Y/m/d - H:i:s') ." - Mise à jour de $nbUpdate lignes d'adresses sur $nbLignes.". EOL; + } + } + //print_r($tabFichiers); + //die(); + if (!$noMail) { + $message.=date('Y/m/d - H:i:s') ." - Fin de réception des adresses RNVP.".EOL; + sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', "Traitement RNVP - Envoi en RNVP", $message); + } + + echo date('Y/m/d - H:i:s') ." - Fin de la réception des adresses RNVP.".EOL; +} + +if ($collecteAdr) { + + echo date('Y/m/d - H:i:s') ." - Recherche des nouvelles adresses par sources...".EOL; + + foreach ($tabSrc as $src=>$tabSrcDet) { + if ($tabSrcDet['go']==0) { + echo date('Y/m/d - H:i:s') ." - On ne traite pas les adresses '".$tabSrcDet['lib']."'".EOL; + continue; + } elseif ($tabSrcDet['notBetween']<>'') { + $tmpNotBetween=explode('-', $tabSrcDet['notBetween']); + $timeDeb=str_replace(':','',$tmpNotBetween[0])*1; + $timeFin=str_replace(':','',$tmpNotBetween[1])*1; + if (date('Hi')*1>$timeDeb && date('Hi')*1<$timeFin) { + echo date('Y/m/d - H:i:s') ." - On ne traite pas les adresses '".$tabSrcDet['lib']."' entre ".$tabSrcDet['notBetween'].EOL; + continue; + } + } + + if ($sourceCollecteOnly) { + if ($sourceCollecteOnly<>$src) { + //echo date('Y/m/d - H:i:s') ." - On ne traite pas les adresses '".$tabSrcDet['lib']."'".EOL; + continue; + } + } + echo date('Y/m/d - H:i:s') ." - Traitement des adresses '".$tabSrcDet['lib']."' (Source ".$tabSrcDet['idSrc'].")".EOL; + unset($iDb); + $iDb=new WDB($tabSrcDet['db']); + + //enum('an8', 'domaines', 'fax', 'logo', '', 'mob', 'tel', 'web') + $nb=$iDb->select($tabSrcDet['table'], $tabSrcDet['zones'],$tabSrcDet['where'], false,MYSQL_ASSOC,true); + /* + echo "SELECT ".$tabSrcDet['zones']." + FROM ".$tabSrcDet['table']." + WHERE ".$tabSrcDet['where'].";".EOL; + */ + if (mysql_errno()<>0) die(mysql_error().EOL); + echo date ('Y/m/d - H:i:s')." - Il y a $nb ligne(s) d'adresses '".$tabSrcDet['lib']."' à traiter...".mysql_error().EOL; + $j=0; + while ($tabAdr=$iDb->fetch(MYSQL_ASSOC)) { + $j++; + $source = $tabAdr['source']; + $source_id = $tabAdr['source_id']; + $num = $tabAdr['num']; + // Retraitement des adresses dont toutes les informations sont sur la même ligne + if (isset($tabSrcDet['splitterL4']) && $tabSrcDet['splitterL4']==1) { + $adrL4=$tabAdr['L4in']; + $tabAdr2=$iInsee->structureVoie($adrL4); + $tabAdr['L3in']=@$tabAdr2['adrComp0']; + $tabAdr['L4in']=@$tabAdr2['num'].' '.@$tabAdr2['indRep'].' '.@$tabAdr2['typeVoie'].' '.@$tabAdr2['libVoie']; + $tabAdr['L5in']=@$tabAdr2['adrComp1']; + $tabAdr['L6in']=@$tabAdr2['cp'].' '.@$tabAdr2['ville']; + //print_r($tabAdr); + //die($adrL4); + } + + if ($iDb2->insert('rnvpSources', $tabAdr, false) || $iDb2->getLastErrorNum()==1062) { + if ($iDb2->getLastErrorNum()<>1062) @$nbInsert[$src]++; + /*elseif ($iDb2->getLastErrorNum()==1062) { + $ret2=$iDb2->select('villes.rnvpSources', 'id', "source=$source AND source_id=$source_id AND num=$num", false, MYSQL_ASSOC); + $id=$ret2[0]['id']; + $iDb2->query("INSERT IGNORE INTO villes.rnvpHisto SELECT * FROM villes.rnvpSources WHERE id=$id;", false); + $iDb2->query("DELETE FROM villes.rnvpSources WHERE id=$id;", false); + @$nbUpdate[$src]++; + if (!$iDb2->insert('rnvpSources', $tabAdr, false)) die($iDb2->getLastError()); + }*/ + @$nbTot[$src]++; + } else die($iDb2->getLastError()); + } + } + + print_r($nbInsert); + print_r($nbUpdate); + print_r($nbTot); + + + if (!$noMail) { + $message=date('Y/m/d - H:i:s') ." - Fin de la récupération des Adresses des différentes sources :".EOL; + foreach ($tabSrc as $src=>$tTmp) + if (@$nbTot[$src]>0) + $message.=" Adresses '$src' :\t".@$nbInsert[$src].' ajouts et '.@$nbUpdate[$src].' MAJ / '.@$nbTot[$src].' adresses'.EOL; + sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', "Traitement RNVP - Récupération des adresses", $message); + } + + echo date('Y/m/d - H:i:s') ." - Fin de la recherche des adresses par sources.".EOL; + +} + +if ($envoiRnvp || $envoiRnvpAll) { + $dateEnvoirRnvp=date('Ymd_His'); + $dateEnvoirRnvpInt=str_replace('_','',$dateEnvoirRnvp); + $nbExport=0; + if ($envoiSrc>0) { + $sqlWhereRnvp=" source=$envoiSrc AND num=$envoiNum "; + } elseif ($envoiRnvpAll) { + $sqlWhereRnvp=" dateEnvoiRnvp<>0 AND dateRetourRnvp=0 "; + } else + $sqlWhereRnvp=" dateEnvoiRnvp=0 "; + + if (count($tabFichiersCmd)==1) + $fileNameOut=$tabFichiersCmd[0]; + else { + $fileNameOut="RNVP_SED_$dateEnvoirRnvp.txt"; + echo date('Y/m/d - H:i:s') ." - Sélection des adresses à envoyer en RNVP.".EOL; + $message=date('Y/m/d - H:i:s') ." - Début de la sélection des adresses à envoyer en RNVP.".EOL; + $tabTmp=$iDb2->select('villes.rnvpSources','COUNT(*) AS nb', $sqlWhereRnvp, false, MYSQL_ASSOC); + $nbExport=$tabTmp[0]['nb']; + echo date('Y/m/d - H:i:s') ." - Il y a $nbExport lignes d'adresses à envoyer en RNVP...".EOL; + } + $fileNameFlag=substr($fileNameOut,0,-4).'.flag'; + $fileNameZip=substr($fileNameOut,0,-4).'.zip'; + if ($nbExport>0 && count($tabFichiersCmd)==0) { + $nb=$iDb->exportCSV("SELECT id AS REF, + TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L1in,'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')) AS NOM, + TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L2in,'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')) AS ENSEIGNE, + SUBSTRING(TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L3in,'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')),1,150) AS ADRESSE1, + SUBSTRING(TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L4in,'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')),1,150) AS ADRESSE2, + SUBSTRING(TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L5in,'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')),1,150) AS ADRESSE3, + SUBSTRING(L6in,1,5) AS CP, + SUBSTRING(TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING(L6in,6,LENGTH(L6in)),'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')),1,150) AS VILLE, + TRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(L7in,'F-',''),'\"',' '),CHAR(9),' '),CHAR(13),' '),CHAR(10),' '),' ',' ')) AS PAYS FROM villes.rnvpSources WHERE $sqlWhereRnvp ORDER BY id ASC LIMIT 0,$nbAdrRnvp;", RNVP_FTP_LOCALDIR.$fileNameOut,$sep,$eol); + + $iDb->query("UPDATE villes.rnvpSources SET dateEnvoiRnvp=$dateEnvoirRnvpInt WHERE $sqlWhereRnvp ORDER BY id ASC LIMIT $nbAdrRnvp;", false); + echo mysql_error().EOL; + $sizeO=filesize(RNVP_FTP_LOCALDIR.$fileNameOut); + file_put_contents(RNVP_FTP_LOCALDIR.$fileNameFlag, "$fileNameOut"); + $sizeK=round($sizeO/1024,1); + echo date('Y/m/d - H:i:s') ." - Export de $nb lignes d'adresses ($sizeK Ko).". EOL; + } + if (count($tabFichiersCmd)==1 || $nbExport>0) { + if (count($tabFichiersCmd)==1) + echo date('Y/m/d - H:i:s') ." - Export du fichier '$fileNameOut'...". EOL; + $sizeO=filesize(RNVP_FTP_LOCALDIR.$fileNameOut); + $sizeK=round($sizeO/1024,1); + + $tDeb=microtime(1); + + $fc = ftp_connect(RNVP_FTP_HOST); + if (!$fc) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de se connecter à '".RNVP_FTP_HOST."' !". EOL); + $fl = ftp_login($fc, RNVP_FTP_LOGIN, RNVP_FTP_PASS); + if (!$fl) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de s'authentifier à '".RNVP_FTP_HOST."' !". EOL); + + //CHARGEMENT ET D'UN FICHIER + $fup = ftp_put($fc, RNVP_FTP_DIR_PUT.$fileNameOut, RNVP_FTP_LOCALDIR.$fileNameOut, FTP_BINARY); + + //VERIFICATION DU BON CHARGEMENT DU FICHIER + if (!$fup) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de déposer '".RNVP_FTP_LOCALDIR.$fileNameOut."' vers '".RNVP_FTP_HOST."' !". EOL); + $duree=round(microtime(1)-$tDeb,1); + $fup = ftp_put($fc, RNVP_FTP_DIR_PUT.$fileNameFlag, RNVP_FTP_LOCALDIR.$fileNameFlag, FTP_BINARY); + if (!$fup) die(date('Y/m/d - H:i:s') ." - Erreur : Impossible de déposer '".RNVP_FTP_LOCALDIR.$fileNameFlag."' vers '".RNVP_FTP_HOST."' !". EOL); + + if (count($tabFichiersCmd)==1) + echo date('Y/m/d - H:i:s') ." - Upload du fichier '$fileNameOut' ($sizeK Ko) en $duree secondes.". EOL; + else + echo date('Y/m/d - H:i:s') ." - Upload de $nb lignes d'adresses ($sizeK Ko) en $duree secondes.". EOL; + + //FERMETURE DE LA CONNEXION + ftp_close($fc); + + if (bzip2(RNVP_FTP_LOCALDIR.$fileNameOut,RNVP_BACKUP_DIR.$fileNameOut)) { + unlink(RNVP_FTP_LOCALDIR.$fileNameOut); + $messageLigne=date ('Y/m/d - H:i:s') . " - Le fichier '$fileNameOut' vient d'être historisé.".EOL; + echo $messageLigne; + $message.=$messageLigne; + } + + if (!$noMail) { + $message.=date('Y/m/d - H:i:s') ." - Fin de l'envoi vers la RNVP.".EOL; + if (count($tabFichiersCmd)==1) + $message.=date('Y/m/d - H:i:s') ." - Upload du fichier '$fileNameOut' ($sizeK Ko) en $duree secondes.". EOL; + else + $message.=date('Y/m/d - H:i:s') ." - Upload de $nb lignes d'adresses ($sizeK Ko) en $duree secondes.". EOL; + sendMail('production@scores-decisions.com', 'ylenaour@scores-decisions.com,suivi@scores-decisions.com', "Traitement RNVP - Envoi en RNVP", $message); + } + + + } else + echo date('Y/m/d - H:i:s') ." - Il n'y a aucune adresse à envoyer en RNVP !".EOL; + + echo date('Y/m/d - H:i:s') ." - Fin de l'envoi vers la RNVP.".EOL; +} + +echo date('Y/m/d - H:i:s') ." - FIN du programme de RNVP.".EOL; + +die(); + +?> \ No newline at end of file diff --git a/bin/getAmf.php b/bin/getAmf.php new file mode 100644 index 00000000..d8a13324 --- /dev/null +++ b/bin/getAmf.php @@ -0,0 +1,159 @@ +#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini + +Mise à jour des listes des sociétés de gestion agrées par l'AMF + +Options : + -v Mode debug (Verbosité au maximum et fonctionnement sans timer ni contraintes temporelles) + +";/* -i:XXXXX Reprendre au code commune Insee XXXXX + +";*/ + +$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 'v': $modeDebug=true; break; + case '-': + case '?': die($strInfoScript); break; + default: die('Option '. $argv[$i] . " inconnue !\n"); + } + } +} + +$iDb=new WDB('sdv1'); +$table='amf_geco'; +//$urlBase='http://www.amf-france.org/bio/rech_SG.aspx'; +$urlBase='http://www.amf-france.org/bio/res_SG.aspx'; + +$tabZones=array('codeQE'=>' Code QE n°(?:.*) (\d+)', +/* type char(3) latin1_swedish_ci Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + typeId mediumint(8) UNSIGNED Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + nom varchar(78) latin1_swedish_ci Oui NULL Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + siren int(9) UNSIGNED ZEROFILL Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + sirenValide tinyint(1) Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + nic mediumint(5) UNSIGNED ZEROFILL Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + nicValide tinyint(1) Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + agrementDate varchar(10) latin1_swedish_ci Oui NULL Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + agrementType tinyint(1) UNSIGNED Non 0 Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + agrementNum varchar(11) latin1_swedish_ci Oui NULL Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + adr varchar(40) latin1_swedish_ci Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + adrComp varchar(40) latin1_swedish_ci Oui NULL Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + cp char(5) latin1_swedish_ci Non Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + ville varchar(32) latin1_swedish_ci Oui NULL Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier + dateConf +*/ + 'raiSoc'=>' Raison Sociale(?:.*) (.*)', + 'adresse'=>' Adresse(?:.*)(?:.*) (.*)', + 'chef'=>' Chef(?:.*)entreprise(?:.*)(?:.*) (.*)', + 'cp'=>' Code(?:.*)Postal(?:.*) (\d\d\d\d\d)', + 'ville'=>' Ville(?:.*) (\D+)', + 'tel'=>' Téléphone(?:.*) (\d\d\d\d\d\d\d\d\d\d)', + 'fax'=>' Fax(?:.*) (?:\d\d\d\d\d\d\d\d\d\d)(?:.*) (\d\d\d\d\d\d\d\d\d\d)', + 'mail'=>' E-mail(?:.*) ', + 'web'=>' Site(?:.*)Internet(?:.*) ', + 'fj'=>' Forme(?:.*)juridique(?:.*) (.*)', + 'siret'=>' SIREN(?:.*) (\d+)', + 'naf'=>' Code(?:.*)NAF(?:.*) (.*)', + 'qualifs[qualifUrl,qualifCode,qualifLib]'=>'(?:.*) (.*)(?:.*) (.*)(?:.*)', + + ); +echo date ('Y/m/d - H:i:s')." - Début de la mise à jour des entreprises '$table'...".EOL; + +$ret=$iDb->select($table, 'agrementNum', '1', false); +foreach ($ret as $tAgrNum) { + $agrNum=$tAgrNum['agrementNum']; + echo date ('Y/m/d - H:i:s')." - Num Agrément : $agrNum".EOL; +} + +for($i=$iDeb;;$i++) { + $tabInsert=array('id'=>$i); + + $url=$urlBase."?NumAgr=$agrNum&DateDeb=&DateFin=&lstTypeDec=0&NomSOc=&action=new&varvalidform=on&hidRagCode=&CodeAMF=&btnvalid.x=13&btnvalid.y=15"; + $page=getUrl($url, '', '', '', false); + $referer=$url; + $body=$page['body']; + print_r($page); + die(); + + $tabHtml=html2array($body, $tabZones); + + foreach ($tabHtml as $zone=>$data) { + if (is_array($data)) { + foreach ($data as $j=>$tabInsert2) { + $tabInsert2['id']=$i; + $tabInsert2['num']=$j; + $tabInsert2['dateInsert']=date('YmdHis'); + if (!$iDb->insert($table.$zone, $tabInsert2, false)) { + if (mysql_errno()==1062) { + unset($tabInsert2['dateInsert']); + $iDb->update($table.$zone, $tabInsert2, "id=$i AND num=$j", false); + } else { + print_r($tabInsert2); + die(mysql_error()); + } + } + } + } else + $tabInsert[$zone]=$data; + } + if (count($tabInsert)<10 || $tabInsert['raiSoc']=='') { + $nbVides++; + if ($nbVides<20) continue; + else { + echo date('Y/m/d - H:i:s')." - $i : Il semble que le dernier numéro '$table' attribué soit le ".($i-$nbVides).EOL; + die(); + } + } + $nbVides=0; + + unset($tabInsert['qualifs']); + + if (isset($tabInsert['urlImg']) && $tabInsert['urlImg']<>'') { + $urlLogo='http://www.qualifelec.fr/'; + die($tabInsert['urlImg']); + if (substr($urlLogo,0,32)=='http://www.annuaire.com/uploads/') { + $extension=substr(strrchr($urlLogo,'.'),1); + if (!file_exists("/home/data/logos/$siren.$extension")) { + $referer=''; + $tDeb=microtime(true); + $page=getUrl($urlLogo, '', '', $referer, false, '', '', 60); + $duree=round(microtime(true)-$tDeb,3); + $body=$page['body']; + $taille=round(strlen($body)/1024,1); + file_put_contents("/home/data/logos/$siren.$extension",$body); + } + } + } + unset($tabInsert['urlImg']); + $tabInsert['dateInsert']=date('YmdHis'); + if (!$iDb->insert($table, $tabInsert, false)) { + if (mysql_errno()==1062) { + unset($tabInsert['dateInsert']); + $iDb->update($table, $tabInsert, "id=$i", false); + } else { + print_r($tabInsert); + die(mysql_error()); + } + } + + //die(); + $nb=count($tabInsert); + $nb2=@count($tabInsert2); + echo date('Y/m/d H:i:s')." - $i : $nb zones et $nb2 qualifications".EOL; + + if ($modeDebug) randsleep(1,2); + else randsleep(7,21); +} + +die(); + + ?> \ No newline at end of file diff --git a/bin/getAnnoncesOctde.php b/bin/getAnnoncesOctde.php new file mode 100644 index 00000000..cf33d331 --- /dev/null +++ b/bin/getAnnoncesOctde.php @@ -0,0 +1,2664 @@ +#!/usr/bin/php +0, // n/d + 1=>10, // voie reconnue + 2=>20, // voie partiellement reconnue + 3=>30, // voie inconnue + 4=>40, // voie vide + 5=>70, // Code Postal / Localité inconnu + ); + +$tabCodesFct=array(); +$tabTmp=$iDb->select('bodacc_fonctions', "codeOctde, codeFct, libelle", "codeOctde>0 ORDER BY codeOctde ASC", true, MYSQL_ASSOC); +foreach ($tabTmp as $tmpFct) { + $tabCodesFct[$tmpFct['codeOctde']*1]['code']=$tmpFct['codeFct']; + $tabCodesFct[$tmpFct['codeOctde']*1]['lib']=$tmpFct['libelle']; +} +$tabCodesFct[84]['code']='Syndic'; +$tabCodesFct[85]['code']='Curateur'; +$tabCodesFct[89]['code']='AJ'; //Administrateur Judiciaire +$nbFctDir=count($tabCodesFct); +//print_r($tabCodesFct);die(); + +$tabJalsOctde=array(); +$tabTmp=$iDb->select('tabJALed', "id, nomJALedition, parutionJours, aboAnnuelDateMaj*1 AS dateAbo, aboDateDeb*1 AS dateDeb, aboVecteur", "id>0 ORDER BY id ASC", true, MYSQL_ASSOC); +foreach ($tabTmp as $tmpFct) + $tabJalsOctde[$tmpFct['id']*1]=array( 'titre'=>$tmpFct['nomJALedition'], + 'jours'=>$tmpFct['parutionJours'], + 'dateAbo'=>$tmpFct['dateAbo'], + 'dateDeb'=>$tmpFct['dateDeb'], + 'vecteur'=>$tmpFct['aboVecteur']); +$nbJalsOctde=count($tabJalsOctde); +//print_r($tabJalsOctde);die(); + +$tabCodesEven=array(); +$tabTmp=$iDb->select('tabEvenements', "codeOctde, codEven", "codeOctde>0 ORDER BY codeOctde ASC", true, MYSQL_ASSOC); +foreach ($tabTmp as $tmpFct) { + $tabCodesEven['_'.$tmpFct['codeOctde']]=$tmpFct['codEven']; +} +$tabCodesEven['_2151']=2315; // Nomination d'un administrateur ==> changement de dirigeant +$tabCodesEven['_5212']=1200; // RJ +$tabCodesEven['_5220']=1305; // LJ +$tabCodesEven['_5430']=1425; // Plan cession LG +$tabCodesEven['_4337']=5460; // Cession Donation +$tabCodesEven['_4116']=2885; // Fin de LG +$tabCodesEven['_2121']='Locaux/Baux'; +$tabCodesEven['_5916']=1500; // Cloture RJ +$tabCodesEven['_7999']=9999; // Code annonce non prévu + +$nbCodesEven=count($tabCodesEven); + +/* +roleIntervenant +Code Libellé +---- ------- +AB Société Absorbante +AS Société Absorbée +LP Propriétaire du fond +LG Locataire gérant +AC Acquéreur +CD Cédant +NE Nouvel Exploitant +PE Précédent Exploitant +SA Société apporteuse (Scission) +SB Société bénéficiaire (Scission) + + +01 Nomination Nomination d'un nouveau dirigeant +03 Confirmation L'annonce évoque un dirigeant déjà en poste, en indiquant la continuité de ses fonctions +06 Décès L'annonce indique un décès +05 Démission Démission d'un dirigeant +07 Départ Fin des fonctions d'un dirigeant, sans précision de révocation, décès ou de démission +02 Modification Modification de la fonction pour un dirigeant déjà en poste +04 Révocation Départ forcé du dirigeant (ex : met fin aux fonctions de..., révoque.., ) +09 Mouvement non précisé L'annonce évoque un dirigeant en poste, sans modification de son rôle +08 Suppression Code pour demander la suppression du dirigeant de la base de données, sans que la notion de Départ, Décès, démission, révocation ne puisse être utilisée + + +A : Administrateur +C : Commissaire au plan +H : Huissier* +J : Juge commissaire +K : Juge commissaire suppléant +L : Liquidateur +M : Mandataire +N : Notaire* +O : Opposition* +R : Représentant des créanciers +T : conciliaTeur +V : aVocat* +Les intervenants avec une * sont spécifiques aux annonces de ventes +*/ + +$strInfoScript='Usage : '.basename($argv[0]). "