2012-02-24 11:02:36 +00:00
|
|
|
#!/usr/bin/php
|
|
|
|
<?php
|
|
|
|
error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
|
|
|
|
|
|
|
|
// Define path to application directory
|
|
|
|
defined('APPLICATION_PATH')
|
|
|
|
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
|
|
|
|
|
|
|
|
// Define application environment
|
|
|
|
define('APPLICATION_ENV', 'production');
|
|
|
|
|
|
|
|
// Ensure library/ is on include_path
|
|
|
|
set_include_path(implode(PATH_SEPARATOR, array(
|
|
|
|
realpath(APPLICATION_PATH . '/../library'),
|
|
|
|
get_include_path(),
|
|
|
|
)));
|
|
|
|
/** Zend_Application */
|
|
|
|
require_once 'Zend/Application.php';
|
|
|
|
|
|
|
|
// Create application, bootstrap, and run
|
|
|
|
$application = new Zend_Application(
|
|
|
|
APPLICATION_ENV,
|
|
|
|
APPLICATION_PATH . '/configs/application.ini'
|
|
|
|
);
|
|
|
|
|
|
|
|
try {
|
|
|
|
$opts = new Zend_Console_Getopt(
|
|
|
|
//Options
|
|
|
|
array(
|
|
|
|
'help|?' => "Aide.",
|
|
|
|
'id=s' => "Identifiant du traitement",
|
2012-03-14 10:42:09 +00:00
|
|
|
'file=s' => "Identifiant pour les traitements par fichier"
|
2012-02-24 11:02:36 +00:00
|
|
|
)
|
|
|
|
);
|
|
|
|
$opts->parse();
|
|
|
|
} catch (Zend_Console_Getopt_Exception $e) {
|
|
|
|
echo $e->getUsageMessage();
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
//Usage
|
|
|
|
if(isset($opts->help) || !isset($opts->id) && !isset($opts->file) )
|
|
|
|
{
|
|
|
|
echo $opts->getUsageMessage();
|
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
|
|
|
//Définition bdd
|
|
|
|
$dbConfig = new Zend_Config_Ini(APPLICATION_PATH . '/configs/configuration.ini', 'databases');
|
|
|
|
try {
|
|
|
|
$db = Zend_Db::factory($dbConfig->db);
|
|
|
|
} catch ( Exception $e ) {
|
|
|
|
exit ( $e->getMessage() );
|
|
|
|
}
|
|
|
|
//Définition bdd metier
|
|
|
|
try {
|
2012-03-20 08:24:41 +00:00
|
|
|
$dbMetier = Zend_Db::factory($dbConfig->jo);
|
2012-02-24 11:02:36 +00:00
|
|
|
} catch ( Exception $e ) {
|
|
|
|
exit ( $e->getMessage() );
|
|
|
|
}
|
|
|
|
|
2012-03-14 10:42:09 +00:00
|
|
|
$liste = array();
|
|
|
|
|
2012-03-20 08:24:41 +00:00
|
|
|
if ($opts->id)
|
|
|
|
{
|
2012-03-14 10:42:09 +00:00
|
|
|
|
2012-03-20 08:24:41 +00:00
|
|
|
//$commandesM = new Table_EnrichissementCommandes($db);
|
|
|
|
$sql = $db->select()
|
|
|
|
->from('enrichissement_identifiants')
|
|
|
|
->where('idComptage = ?', intval($opts->id));
|
|
|
|
$commande = $db->fetchRow($sql);
|
|
|
|
$identifiants = json_decode($commande['identifiants'], true);
|
|
|
|
|
|
|
|
//$profilM = new Table_EnrichissementProfils($db);
|
|
|
|
$sql = $db->select()
|
|
|
|
->from('enrichissement_profils')
|
|
|
|
->where('id = ?', $commande['idProfil']);
|
|
|
|
$profil = $db->fetchRow($sql);
|
|
|
|
$dataProfil = json_decode($profil['criteres'], true);
|
|
|
|
} else if ($opts->file)
|
|
|
|
{
|
2012-02-24 11:02:36 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2012-03-14 10:42:09 +00:00
|
|
|
if ( count($identifiants)>0 && count($dataProfil)>0 )
|
|
|
|
{
|
2012-03-20 08:24:41 +00:00
|
|
|
$outFile = uniqid($commande->reference.'-').'.csv';
|
2012-03-14 10:42:09 +00:00
|
|
|
|
|
|
|
require_once 'Scores/Enrichissement.php';
|
|
|
|
$dico = new Enrichissement();
|
|
|
|
$fields = $dico->getFields();
|
|
|
|
|
|
|
|
//Entete, Valeur de remplacement et Requete SQL
|
|
|
|
$tabEntete = array('siren', 'nic');
|
|
|
|
$tabEnteteLabel = array('SIREN', 'NIC');
|
|
|
|
$sql = 'SELECT siren, nic,';
|
|
|
|
foreach ( $dataProfil as $item ) {
|
|
|
|
//Définition de l'entete
|
|
|
|
$tabEnteteLabel[] = $fields[$item]['label'];
|
|
|
|
$tabEntete[] = $item;
|
|
|
|
|
|
|
|
//Construction de la requete SQL
|
|
|
|
if ( array_key_exists('sql', $fields[$item]) ) {
|
2012-03-20 08:24:41 +00:00
|
|
|
$sql.= '';
|
2012-03-14 10:42:09 +00:00
|
|
|
} else {
|
|
|
|
$sql.= ' '.$fields[$item]['column'].' AS '.$item.',';
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
//Ajouter le champ presentRcs
|
|
|
|
$tabEntete[] = 'presentRcs';
|
|
|
|
$tabEnteteLabel[] = 'RCS';
|
|
|
|
$sql.= ' presentRcs';
|
|
|
|
|
|
|
|
//Pour chaque identifiant traiter les données
|
|
|
|
$row = 0;
|
|
|
|
$fp = fopen($outFile, 'w');
|
|
|
|
//Ecrire l'entete
|
|
|
|
if (count($tabEnteteLabel)>0){
|
|
|
|
fputcsv($fp, $tabEnteteLabel, ',', '"');
|
|
|
|
}
|
2012-03-20 08:24:41 +00:00
|
|
|
$model = $sql;
|
2012-03-14 10:42:09 +00:00
|
|
|
foreach ($identifiants as $siret )
|
|
|
|
{
|
2012-03-20 08:24:41 +00:00
|
|
|
$sql = $model .' FROM etablissements_act WHERE siren='.substr($siret,0,9).' AND nic='.substr($siret,9,5);
|
|
|
|
$result = $dbMetier->fetchAll($sql);
|
2012-03-14 10:42:09 +00:00
|
|
|
$tabData = $result[0];
|
|
|
|
//Trier pour la sortie
|
|
|
|
$tabSortie = array();
|
|
|
|
foreach($tabEntete as $key){
|
|
|
|
$tabSortie[] = isset($tabData[$key]) ? $tabData[$key] : '';
|
|
|
|
}
|
|
|
|
fputcsv($fp, $tabSortie, ',', '"');
|
|
|
|
|
|
|
|
$row++;
|
|
|
|
}
|
2012-03-20 08:24:41 +00:00
|
|
|
echo $row .' Lignes !';
|
|
|
|
fclose($fp);
|
2012-03-14 10:42:09 +00:00
|
|
|
}
|
|
|
|
|
2012-02-24 11:02:36 +00:00
|
|
|
|
|
|
|
/* == FUNCTION == */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Verifie si un SIREN est valide
|
|
|
|
* @param Le code SIREN dont on veut vérifier la validité.
|
|
|
|
* @return Un booléen qui vaut 'true' si le code SIREN passé en
|
|
|
|
* paramètre est valide, false sinon.
|
|
|
|
*/
|
|
|
|
function sirenValide($siren) {
|
|
|
|
if ( (strlen($siren) != 9) || (is_nan($siren)) )
|
|
|
|
$estValide = false;
|
|
|
|
else {
|
|
|
|
// Donc le SIREN est un numérique à 9 chiffres
|
|
|
|
$somme = 0;
|
|
|
|
$tmp = 0;
|
|
|
|
for ($cpt = 0; $cpt<strlen($siren); $cpt++) {
|
|
|
|
if (($cpt % 2) == 1) { // Les positions paires : 2ème, 4ème, 6ème et 8ème chiffre
|
|
|
|
$tmp = substr($siren, $cpt, 1) * 2; // On le multiplie par 2
|
|
|
|
if ($tmp > 9)
|
|
|
|
$tmp-= 9; // Si le résultat est supérieur à 9, on lui soustrait 9
|
|
|
|
}
|
|
|
|
else
|
|
|
|
$tmp = substr($siren, $cpt, 1);
|
|
|
|
$somme+= intval($tmp);
|
|
|
|
}
|
|
|
|
if (($somme % 10) == 0)
|
|
|
|
$estValide = true; // Si la somme est un multiple de 10 alors le SIREN est valide
|
|
|
|
else
|
|
|
|
$estValide = false;
|
|
|
|
}
|
|
|
|
return $estValide;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Verifie si un SIRET est valide
|
|
|
|
* @param Le code SIRET dont on veut vérifier la validité.
|
|
|
|
* @return Un booléen qui vaut 'true' si le code SIRET passé en
|
|
|
|
* paramètre est valide, false sinon.
|
|
|
|
*/
|
|
|
|
function siretValide($siret) {
|
|
|
|
if ( (strlen($siret) != 14) || (is_nan($siret)) )
|
|
|
|
$estValide = false;
|
|
|
|
else {
|
|
|
|
// Donc le SIRET est un numérique à 14 chiffres
|
|
|
|
// Les 9 premiers chiffres sont ceux du SIREN (ou RCS), les 4 suivants
|
|
|
|
// correspondent au numéro d'établissement
|
|
|
|
// et enfin le dernier chiffre est une clef de LUHN.
|
|
|
|
$somme = 0;
|
|
|
|
$tmp = 0;
|
|
|
|
for ($cpt = 0; $cpt<strlen($siret); $cpt++) {
|
|
|
|
if (($cpt % 2) == 0) { // Les positions impaires : 1er, 3è, 5è, etc...
|
|
|
|
$tmp = substr($siret, $cpt, 1) * 2; // On le multiplie par 2
|
|
|
|
if ($tmp > 9)
|
|
|
|
$tmp-= 9; // Si le résultat est supérieur à 9, on lui soustrait 9
|
|
|
|
}
|
|
|
|
else
|
|
|
|
$tmp = substr($siret, $cpt, 1);
|
|
|
|
$somme+= intval($tmp);
|
|
|
|
}
|
|
|
|
if (($somme % 10) == 0)
|
|
|
|
$estValide = true; // Si la somme est un multiple de 10 alors le SIRET est valide
|
|
|
|
else
|
|
|
|
$estValide = false;
|
|
|
|
}
|
|
|
|
return $estValide;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* writeCSV
|
|
|
|
* @param array $list
|
|
|
|
* @param array $entete
|
|
|
|
* @param string $filename
|
|
|
|
*/
|
|
|
|
function writeCSV($list, $entete, $filename)
|
|
|
|
{
|
|
|
|
$fp = fopen($filename, 'w');
|
|
|
|
if (count($entete)>0){
|
|
|
|
fputcsv($fp, $entete, ',', '"');
|
|
|
|
}
|
|
|
|
foreach ($list as $fields) {
|
|
|
|
fputcsv($fp, $fields, ',', '"');
|
|
|
|
}
|
|
|
|
fclose($fp);
|
|
|
|
}
|