Update rules

This commit is contained in:
Michael RICOIS 2014-12-10 20:32:40 +00:00
parent e69aa50ab3
commit 0c9872351d

View File

@ -94,8 +94,6 @@ $path = $config->profil->path->data.'/'.$mois;
if(!file_exists($path)) if(!file_exists($path))
mkdir($path); mkdir($path);
$outFile = $profil->login.'_'.$opts->id.'_'.date('YmdHis').'.csv';
require_once 'Scores/Enrichissement.php'; require_once 'Scores/Enrichissement.php';
$dico = new Enrichissement(); $dico = new Enrichissement();
$fields = $dico->getFields(); $fields = $dico->getFields();
@ -105,10 +103,11 @@ $tabEntete = array('siren', 'nic');
$tabEnteteLabel = array('SIREN', 'NIC'); $tabEnteteLabel = array('SIREN', 'NIC');
$columns = array('LPAD(siren, 9, 000000000) AS siren', 'LPAD(nic,5,00000) AS nic'); $columns = array('LPAD(siren, 9, 000000000) AS siren', 'LPAD(nic,5,00000) AS nic');
$joins = array(); $joins = array();
foreach ( $dataProfil as $item ) { foreach ( $dataProfil as $item )
{
//Get item //Get item
if ( array_key_exists($item, $fields) ) { if ( array_key_exists($item, $fields) )
{
$field = $fields[$item]; $field = $fields[$item];
//Définition de l'entete //Définition de l'entete
@ -123,7 +122,8 @@ foreach ( $dataProfil as $item ) {
} }
//Pour les champs de type "code", ajouter le libellé //Pour les champs de type "code", ajouter le libellé
if ( array_key_exists('join', $field) ) { if ( array_key_exists('join', $field) )
{
$tabEnteteLabel[] = $field['join']['label']; $tabEnteteLabel[] = $field['join']['label'];
$joinColumn = $item.'Lib'; $joinColumn = $item.'Lib';
$tabEntete[] = $joinColumn; $tabEntete[] = $joinColumn;
@ -139,52 +139,106 @@ foreach ( $dataProfil as $item ) {
} }
} }
//Ajouter le champ presentRcs //Ajouter le champ presentRcs
$columns = 'presentRcs'; $columns[] = 'presentRcs';
$tabEntete[] = 'presentRcs'; $tabEntete[] = 'presentRcs';
$tabEnteteLabel[] = 'RCS'; $tabEnteteLabel[] = 'RCS';
$sqlFrom .= ' presentRcs';
//Paramètres du fichier
/**
* Possible file format
* csv, xlsx, xls, ods
* Possible options (for csv)
* separator : , ;
* encoding : ISO-8859-15, UTF-8
*/
$fileFormat = 'csv';
$fileOptions = array(
'separator' => ',',
'encoding' => 'UTF-8',
);
if ($commande->fileFormat == 'csv') {
$fileFormat = 'csv';
$options = json_decode($commande->fileOptions);
if (!empty($options->separator)) {
$fileOptions['separator'] = $options->separator;
}
if (!empty($options->encoding)) {
$fileOptions['encoding'] = $options->encoding;
}
}
if ($commande->fileFormat == 'xlsx') {
$fileFormat = 'xlsx';
}
//Ouverture fichier
if ($fileFormat == 'csv')
{
$outFile = $profil->login.'_'.$opts->id.'_'.date('YmdHis').'.csv';
$fp = fopen($path.'/'.$outFile, 'w');
//Ecrire l'entete
if (count($tabEnteteLabel) > 0)
{
fputcsv($fp, $tabEnteteLabel, $fileOptions['separator'], '"');
}
}
if ($fileFormat == 'xlsx')
{
$outFile = $profil->login.'_'.$opts->id.'_'.date('YmdHis').'.xlsx';
$objPHPExcel = new PHPExcel();
$sheet = $objPHPExcel->setActiveSheetIndex(0);
//Ecrire l'entete
if (count($tabEnteteLabel) > 0)
{
foreach($tabEnteteLabel as $col => $value)
{
$sheet->setCellValueByColumnAndRow($col, 1, $value);
}
}
}
//Mise à jour des éléments
if ($opts->id)
{
$commandesM->update(array(
'dateStart'=>date('Y-m-d H:i:s'),
'fichier' => basename($outFile)
), "id = ".$commande->id);
}
//Pour chaque identifiant traiter les données //Pour chaque identifiant traiter les données
$row = 0; $row = 1;
$fp = fopen($path.'/'.$outFile, 'w');
//Ecrire l'entete
if (count($tabEnteteLabel)>0){
fputcsv($fp, $tabEnteteLabel, ',', '"');
}
//Mise à jour des éléments
if ($opts->id) {
$commandesM->update(array(
'dateStart'=>date('Y-m-d H:i:s'),
'fichier' => basename($outFile)
),
"id = ".$commande->id);
}
$traite = 0;
//Date de debut de traitement. //Date de debut de traitement.
$dateStart = date('YmdHms'); $dateStart = date('YmdHms');
foreach ($identifiants as $siret ) foreach ($identifiants as $siret)
{ {
$sql = $db->select()->from('jo.etablissements_act', $columns); $sql = $db->select()->from('jo.etablissements_act', $columns);
$sql->where("siren='".substr($siret,0,9)."' AND nic='".substr($siret,9,5)."'"); $sql->where("siren='".substr($siret,0,9)."' AND nic='".substr($siret,9,5)."'");
if (count($joins)) { if (count($joins))
foreach ( $joins as $join ) { {
foreach ( $joins as $join )
{
$sql->joinLeft($join['name'], $join['cond'], $join['col']); $sql->joinLeft($join['name'], $join['cond'], $join['col']);
} }
} }
try { try {
$result = $db->fetchRow($sql); $result = $db->fetchRow($sql);
$traite++;
} catch(Exception $e) { } catch(Exception $e) {
echo $sql; echo $sql;
} }
$tabData = $result->toArray(); $tabData = $result->toArray();
//Trier pour la sortie //Trier pour la sortie
$tabSortie = array(); $tabSortie = array();
foreach($tabEntete as $key) { foreach($tabEntete as $key)
{
//Add static values //Add static values
if ( array_key_exists($key, $fields) ) { if ( array_key_exists($key, $fields) ) {
if ( array_key_exists('values', $fields[$key]) ) { if ( array_key_exists('values', $fields[$key]) ) {
@ -199,7 +253,21 @@ foreach ($identifiants as $siret )
//Order data for CSV file //Order data for CSV file
$tabSortie[] = isset($tabData[$key]) ? $tabData[$key] : ''; $tabSortie[] = isset($tabData[$key]) ? $tabData[$key] : '';
} }
fputcsv($fp, $tabSortie, ',', '"');
//Ecriture dans le fichier
if ($fileFormat == 'csv')
{
fputcsv($fp, $tabSortie, ',', '"');
}
if ($fileFormat == 'xlsx')
{
foreach($tabSortie as $col => $value)
{
$sheet->setCellValueByColumnAndRow($col, $row+1, $value);
}
}
//Mise à jour des lignes traitées dans la base //Mise à jour des lignes traitées dans la base
if ($opts->id) { if ($opts->id) {
@ -208,8 +276,22 @@ foreach ($identifiants as $siret )
$row++; $row++;
} }
fclose($fp);
if ($opts->id) { //Fermeture du fichier
if ($fileFormat == 'csv')
{
fclose($fp);
}
if ($fileFormat == 'xlsx')
{
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($path.'/'.$outFile);
}
//Fin de création du fichier
if ($opts->id)
{
$commandesM->update( array('dateStop' => date('Y-m-d H:i:s')) , "id = ".$commande->id); $commandesM->update( array('dateStop' => date('Y-m-d H:i:s')) , "id = ".$commande->id);
} }