This commit is contained in:
Michael RICOIS 2012-03-20 08:40:42 +00:00
commit ff7707563e
31 changed files with 784 additions and 253 deletions

View File

@ -28,6 +28,7 @@ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
->appendFile($pathScript.'/jquery.cookie.js', 'text/javascript')
->appendFile($pathScript.'/jquery-ui.js', 'text/javascript')
->appendFile($pathScript.'/jquery.qtip.js', 'text/javascript')
->appendFile($pathScript.'/upload.js', 'text/javascript')
->appendFile($pathScript.'/scripts.js', 'text/javascript');
$view->headTitle()->setSeparator(' - ');

View File

@ -10,35 +10,9 @@ class DashboardController extends Libs_Controller
public function indexAction()
{
$object = new Object_Dashboard();
$this->view->comptages = $object->index();
$auth = Zend_Auth::getInstance();
$user = $auth->getIdentity();
//Affichage des derniers enrichissements
$enrichissementsM = new Table_EnrichissementIdentifiants();
$sql = $enrichissementsM->select()
->setIntegrityCheck(false)
->from(
array('i' => 'enrichissement_identifiants'),
array('id', 'reference', 'fichier', 'nbLigneTotales', 'nbLigneTraites', 'error', 'dateAdded', 'dateStart', 'dateStop')
)
->join(
array('c' => 'comptages'), 'i.idComptage = c.id',
array('')
)
->join(
array('criteres' => 'criteres'), 'i.idCriteres = criteres.id',
array('')
)
->where('criteres.idClient = ?', $user->idClient)
->where('criteres.login = ?', $user->username)
->order('dateAdded DESC');
$enrichissements = $enrichissementsM->fetchAll($sql);
$this->view->assign('enrichissements', $enrichissements);
$this->view->comptages = $object->index();
$this->view->enrichissements = $object->enrichissements();
}

View File

@ -70,10 +70,17 @@ class EnrichissementController extends Zend_Controller_Action
*/
public function commandeAction()
{
$this->_helper->layout()->disableLayout();
$request = $this->getRequest();
$idCriteres = $request->getParam('id', null);
$idProfil = $request->getParam('profil', null);
$comptage = new Table_Comptages();
$sql = $comptage->select()->where('idDefinition = ?', $idCriteres);
$result = $comptage->fetchRow($sql);
$idComptage = $result['idDefinition'];
//Vérifier les profils du client
if ( $idProfil===null ){
//Selection du profil du client
@ -103,27 +110,27 @@ class EnrichissementController extends Zend_Controller_Action
//Récupération des SIRET
require_once 'Scores/Ciblage.php';
$ciblage = new Ciblage($values);
$infosExtraction = $ciblage->extract();
$ciblage = new Ciblage($values, true);
$infosExtraction = $ciblage->execute(true);
//Attention calcul uniteInsee réelle
//car si donnée insee alors toutes les lignes doivent être comptés en unité insee
$data = array(
'idComptage' => $idComptage,
'reference' => $this->getRequest()->getParam('ref'),
'idCriteres' => $criteres->id,
'idProfil' => $idProfil,
'identifiants' => $infosExtraction['result'],
'identifiants' => json_encode($infosExtraction),
'idProfil' => $idProfil,
'fichier' => '',
'nbLigneTotales' => $infosExtraction['total'],
'nbLigneTraites' => '',
'uniteInsee' => $infosExtraction['insee'],
'nbLigneTotales' => count($infosExtraction),
'nbLigneTraites' => count($infosExtraction),
'uniteInsee' => $ciblage->calculRedevanceInsee(),
'error' => '',
'dateAdded' => date('YmdHis'),
);
$identifiantsM = new Table_EnrichissementIdentifiants();
$idIdentifiant = $identifiantsM->insert($data);
}
/**

View File

@ -0,0 +1,22 @@
<?php
Class ExtractController extends Zend_Controller_Action
{
public function indexAction()
{
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
require_once 'Scores/Ciblage.php';
require_once 'Scores/Field.php';
$field = new Fields();
$ciblage = new Ciblage($field->getValues());
$ciblage->extract();
}
public function batchAction()
{
$action = $this->getRequest();
$request = $action->getParam('reference');
}
}

View File

@ -54,7 +54,7 @@ class GeographiqueController extends Libs_Controller
foreach ($result as $item) {
$output[] = array(
'label' => $item->libdep . $separator . $item->numdep,
'value' => 'D'.$item->numdep
'value' => $item->numdep
);
}
return ($output);
@ -62,7 +62,8 @@ class GeographiqueController extends Libs_Controller
protected function completedVil($q)
{
$table = new Table_Codepostauxs();
$table = new Table_Codepostauxs();
$separator = ' ';
$sql = $table->select()->where('Commune LIKE "'.$q.'%"');
$result = $table->fetchAll($sql);
@ -77,7 +78,8 @@ class GeographiqueController extends Libs_Controller
protected function completedReg($q)
{
$table = new Table_Regions();
$table = new Table_Regions();
$separator = ' ';
$sql = $table->select()
->where('NCCENR LIKE "%'.$q.'%"');
@ -85,7 +87,7 @@ class GeographiqueController extends Libs_Controller
foreach ($result as $item) {
$output[] = array(
'label' => $item->NCCENR . $separator . $item->REGION,
'value' => 'R'.$item->REGION
'value' => $item->REGION
);
}
return ($output);

View File

@ -82,14 +82,14 @@ class UserController extends Libs_Controller
if (APPLICATION_ENV != 'production'){
$url = 'http://'.$_SERVER['SERVER_NAME'].$this->view->url(array(
'controller' => 'user',
'action' => 'login',
'controller' => 'user',
'action' => 'login',
));
}
$this->view->assign('url', $url);
$this->view->headMeta()->appendHttpEquiv('refresh', '5; url='.$url);
$this->render('logout');
$this->view->headMeta()->appendHttpEquiv('refresh', '5; url='.$url);
$this->render('logout');
}
}

View File

@ -24,26 +24,27 @@ class Object_Codepostaux extends Libs_Row
$in = array();
foreach($valeurs as $valeur) {
$type = explode(':', $valeur);
if($niveau == 0) {
if ($valeur[0] == 'D'){
$valeur = substr($valeur, 1, strlen($valeur));
if ($type[0] == 'adr_dept'){
$valeur = $type[1];
$insee = $table->fetchAll($table->select('departements', array('codeRegionInsee'))
->where('numdep = ?', substr($valeur, 0, 2)))->toArray();
foreach ($insee as $code)
$in[] = 'R'.$code['codeRegionInsee'];
$in[] = 'adr_reg:'.$code['codeRegionInsee'];
} else{
$valeur = substr($valeur, 0, strlen($valeur));
$valeur = $type[1];
$insee = $table->fetchAll($table->select('departements', array('codeRegionInsee'))
->where('numdep = ?', substr($valeur, 0, 2)))->toArray();
foreach ($insee as $code)
$in[] = 'R'.$code['codeRegionInsee'];
$in[] = 'adr_reg:'.$code['codeRegionInsee'];
}
} else if ($niveau == 1) {
$valeur = substr($valeur, 0, strlen($valeur));
$valeur = $type[1];
$insee = $table->fetchAll($table->select('departements', array('codeRegionInsee'))
->where('numdep = ?', substr($valeur, 0, 2)))->toArray();
foreach ($insee as $code)
$in[] = 'D'.$code['numdep'];
$in[] = 'adr_dept:'.$code['numdep'];
}
}
return ($in);
@ -67,9 +68,9 @@ class Object_Codepostaux extends Libs_Row
foreach($regions as $nom) {
$structure[] = array(
'data' => $nom['NCCENR'],
'attr' => array('id' => 'R'.$nom['REGION'],
'attr' => array('id' => 'adr_reg:'.$nom['REGION'],
'niveau' => 0,
'class' => $this->_getClass('R'.$nom['REGION'], 0)
'class' => $this->_getClass('adr_reg:'.$nom['REGION'], 0)
),
'state' => 'closed',
'children' => array()
@ -81,17 +82,18 @@ class Object_Codepostaux extends Libs_Row
public function _getDepartements($codeRegionInsee)
{
$code = explode(':', $codeRegionInsee);
$departement = new Table_Departements();
$departements = $departement->fetchAll($departement->select()
->where('codeRegionInsee ='.substr($codeRegionInsee, 1, strlen($codeRegionInsee))))->toArray();
->where('codeRegionInsee ='.$code[1]))->toArray();
$structure = array();
foreach($departements as $nom) {
$structure[] = array(
'data' => $nom['libdep'],
'attr' => array('id' => 'D'.$nom['numdep'],
'data' => $nom['numdep'].' '.$nom['libdep'],
'attr' => array('id' => 'adr_dept:'.$nom['numdep'],
'niveau' => 1,
'class' => $this->_getClass('D'.$nom['numdep'], 1)
'class' => $this->_getClass('adr_dept:'.$nom['numdep'], 1)
),
'state' => 'closed',
'children' => array()
@ -103,17 +105,17 @@ class Object_Codepostaux extends Libs_Row
public function _getCommunes($numdep)
{
$numdep = substr($numdep, 1, strlen($numdep));
$numdep = explode(':', $numdep);
$codepostau = new Table_Codepostauxs();
$codepostaux = $codepostau->fetchAll($codepostau->select()->where('codepos LIKE "'.$numdep.'%"'))->toArray();
$codepostaux = $codepostau->fetchAll($codepostau->select()->where('codepos LIKE "'.$numdep[1].'%"'))->toArray();
$structure = array();
foreach($codepostaux as $nom) {
$structure[] = array(
'data' => $nom['Commune'],
'attr' => array('id'=> $nom['INSEE'],
'data' => $nom['Codepos'].' '.$nom['Commune'],
'attr' => array('id'=> 'adr_com:'.$nom['INSEE'],
'niveau' => 2,
'class' => $this->_getClass($nom['INSEE'], 2)
'class' => $this->_getClass('adr_com:'.$nom['INSEE'], 2)
),
'state' => 'closed',
'children' => array()

View File

@ -66,21 +66,32 @@ class Object_Comptage extends Libs_Row
$session->setCritere($key, $valeur);
if($valeur[strlen($valeur)] == ',')
$valeur = substr($valeur, 0, strlen($valeur) -1);
if($key == 'reg' or $key == 'vil' or $key == 'dep') {
if($key == 'vil' or $key == 'adr_reg' or $key == 'adr_dept') {
$key = 'adr_com';
if($session->getCritere('reg')){
$reg = trim($session->getCritere('reg'));
}
if($session->getCritere('vil')){
$vil = trim($session->getCritere('vil'));
$valeurs = explode(',', $session->getCritere('vil'));
foreach($valeurs as $valeur) {
$vil .= 'adr_com:'.trim($valeur).',';
}
//$vil = substr($vil, 0, strlen($vil)-1);
}
if($session->getCritere('dep')){
$dep = trim($session->getCritere('dep'));
if($session->getCritere('adr_reg')) {
$valeurs = explode(',', $session->getCritere('adr_reg'));
foreach($valeurs as $valeur) {
$reg .= 'adr_reg:'.trim($valeur).',';
}
//$reg = substr($reg, 0, strlen($reg)-1);
}
$valeur = implode('', array($reg, $vil, $dep));
if($session->getCritere('adr_dept')) {
$valeurs = explode(',', $session->getCritere('adr_dept'));
foreach($valeurs as $valeur) {
$dept .= 'adr_dept:'.trim($valeur).',';
}
//$dept = substr($dept, 0, strlen($dept)-1);
}
$valeur = $vil.$dept.$reg;
$session->setCritere($key, $valeur);
}
require_once 'Scores/Field.php';
$field = new Fields();

View File

@ -43,6 +43,31 @@ Class Object_Dashboard
return ($results);
}
public function enrichissements()
{
$enrichissementsM = new Table_EnrichissementIdentifiants();
$auth = Zend_Auth::getInstance();
$user = $auth->getIdentity();
$sql = $enrichissementsM->select()
->setIntegrityCheck(false)
->from(
array('i' => 'enrichissement_identifiants'),
array('id', 'reference', 'fichier', 'nbLigneTotales', 'nbLigneTraites', 'error', 'dateAdded', 'dateStart', 'dateStop')
)
->join(
array('c' => 'comptages'), 'i.idComptage = c.id',
array('')
)
->join(
array('criteres' => 'criteres'), 'i.idCriteres = criteres.id',
array('')
)
->where('criteres.idClient = ?', $user->idClient)
->where('criteres.login = ?', $user->username)
->order('dateAdded DESC');
return ($enrichissementsM->fetchAll($sql));
}
public function menu()
{

View File

@ -51,7 +51,7 @@ Class Zend_View_Helper_Field extends Zend_View_Helper_Abstract
}
$html.= $this->structureHTML(
$label,
$this->textHTML($name, $field, $name));
$this->textHTML($name, $field, $name), $field['help'][ucfirst($name)]);
break;
case 'textarea':
$html.= $this->structureHTML(
@ -74,11 +74,11 @@ Class Zend_View_Helper_Field extends Zend_View_Helper_Abstract
return $html;
}
private function structureHTML($label, $html, $liens = array())
private function structureHTML($label, $html, $help = null)
{
$out = '';
$out.= $this->structureLabel($label);
$out.= '<div class="field">'.$html.$this->structureLink($liens).'</div>';
$out.= $this->structureLabel($label, $help);
$out.= '<div class="field">'.$html.'</div>';
return $out;
}
@ -86,26 +86,14 @@ Class Zend_View_Helper_Field extends Zend_View_Helper_Abstract
* Définition du label
* @param unknown_type $label
*/
private function structureLabel($label)
private function structureLabel($label, $help)
{
return '<label>'.$label.'</label>';
}
$return = '<label>'.$label.'</label>';
if($help)
$return .= '<p style="font-size:9px;">'.$help.'</p>';
/**
* Définition des liens
*/
private function structureLink($liens = array())
{
$html = '';
if (count($liens)>0) {
foreach($liens as $lien){
$html.= '<a href="'.$lien['url'].'">'.$lien['lib'].'</a>';
}
}
if (!empty($html)) {
return '<span>'.$html.'</span>';
}
return '';
return ($return);
}
private function intervalSelectHTML($name, $field)
@ -133,7 +121,6 @@ Class Zend_View_Helper_Field extends Zend_View_Helper_Abstract
private function selectMultipleHTML($name, $field)
{
$session = new SessionCiblage();
$return = '<select class="criteres" name="'.$name.'">';
$return .= '<option value="tous">Tous</option>';
foreach($field['fields'][$field['type']]['value'] as $value => $label) {
@ -204,12 +191,6 @@ Class Zend_View_Helper_Field extends Zend_View_Helper_Abstract
case 'ape_etab':
$type = 'Naf';
break;
case 'dep':
$type = 'Dep';
break;
case 'reg':
$type = 'Reg';
break;
case 'vil':
$type= 'Vil';
break;
@ -219,7 +200,7 @@ Class Zend_View_Helper_Field extends Zend_View_Helper_Abstract
}
/* Modifier les données */
$return = '<textarea rows="5" style="border:1px inset silver;width:60%" class="criteres complited'.$type.'" id="textarea_'.$name.'" name="'.$name.'">'.$session->getCritere($name).'</textarea>';
$return .= '<a href="" class="autocomplet" textarea="'.$name.'">Valider</a>';
$return .= '<a href="" class="autocomplet" textarea="'.$name.'">Valider</a> <a href="">Aide</a>';
return ($return);
}

View File

@ -53,7 +53,7 @@
<div id="lastEnrichissement">
<h2>Vos derniers enrichissements</h2>
<?php if(count($this->enrichissement) > 0):?>
<?php if(count($this->enrichissements) > 0):?>
<table>
<thead>
<tr>
@ -64,7 +64,7 @@
</tr>
</thead>
<tbody>
<?php foreach($this->enrichissement as $item):?>
<?php foreach($this->enrichissements as $item):?>
<tr>
<td><?=$item['reference']?></td>
<td><?=number_format($item['nbLigneTotales'], 0, ',', ' ')?></td>

View File

@ -1 +1,9 @@
<?php
Votre commande a bien été prise en compte sous la référence
<script>
$('#dialog').dialog({ buttons: [ {
text: "Quitter",
click: function() { $(this).dialog('close'); }
} ] });
</script>

View File

@ -7,8 +7,8 @@ Erreur
Vous pouvez prendre contact avec le service commercial en cliquant ici.
Vos critères seront enregistrées et une référence vous sera fourni.</p>
<?php } else {?>
<div id="update">
<p>Votre ciblage a été actualisé</p>
<p>
Nombre d'unités : <?=$this->resultat?><br/>
Nombre d'unités Insee : <?=$this->uniteInsee?><br/>
@ -25,11 +25,27 @@ Nombre d'unités Insee : <?=$this->uniteInsee?><br/>
Les informations permettant l'enrichissement seront enregistrées, après la saisie de votre référence.
</p>
<br/>
<form>
<form name="commande" method="post" action="<?=$this->url(array('controller'=>'enrichissement', 'action'=>'commande'))?>">
<input type="hidden" name="id" value="<?=$this->id?>" />
<label>Référence : </label><input type="text" name="ref">
</form>
<script>
$('#dialog').dialog({ buttons: [ {
text: "Valider",
click: function() {
$.post(
$('form[name=commande]').attr('action'),
$('form[name=commande]').serialize(),
function(data){
$('div#update').html(data);
});
}
},
{
text: "Quitter",
click: function() { $(this).dialog("close"); }
}
] });
</script>
</div>
<?php }?>

View File

@ -1,9 +1,15 @@
<div id="geographique">
<ul id="fieldsblock">
<li><?php echo $this->Field('adr_com', $this->fields->get('adr_com'));?></li>
<li style="background-image:none;height:80px;"><?php echo $this->Field('vil', $this->fields->get('adr_com'), 'text');?></li>
<li style="background-image:none;height:80px;"><?php echo $this->Field('dep', $this->fields->get('adr_com'), 'text');?></li>
<li style="background-image:none;height:80px;"><?php echo $this->Field('reg', $this->fields->get('adr_com'), 'text');?></li>
<li style="background-image:none;height:80px;">
<?php echo $this->Field('vil', $this->fields->get('adr_com'), 'text');?>
</li>
<li style="background-image:none;height:80px;">
<?php echo $this->Field('adr_dept', $this->fields->get('adr_dept'), 'text');?>
</li>
<li style="background-image:none;height:80px;">
<?php echo $this->Field('adr_reg', $this->fields->get('adr_reg'), 'text');?>
</li>
</ul>
</div>
<div style="text-align:right;margin-top:20px;">

View File

@ -1,29 +1,33 @@
<h1>Vos critères de selections</h1>
<style>
.color {
background-color:#DEDEDE;
}
a
{
text-decoration: none;
}
#criteres_ra
{
width:93%;
font-size: 11px;
}
#criteres_ra tr td {
border-left: 1px solid black;
border-right: 1px solid black;
padding-left:5px;
}
</style>
<table id="criteres_ra" style="margin-top:15px">
<table id="criteres_ra" style="margin:10px">
<tr>
<td><b>Champ séléction</b></td>
<td><b>Votre critère</b></td>
<td id="Valide" style="text-align: center" colspan="3"><a class="saveciblage" href="/comptage/savedialog">Valider mon comptage</a></td>
</tr>
<?php $color = 0;foreach($this->criteres as $critere => $valeur):?>
<?php $label = $this->field->get($critere); ?>
<?php if($valeur != 'tous' and $valeur != null and $valeur != 'null' and $valeur != ','):?>
<?php if($valeur != 'tous' and $valeur != null and $valeur != 'null' and $valeur != ',' and $critere != 'adr_com'):?>
<?php $valeur = explode(',', $valeur); ?>
<tr <?php echo ((($color%2) == 0)?'class="color"':''); $color++;?>>
<td valign="top" style="width:150px">
<td valign="top" style="padding:5px;width:150px">
<?php echo $label['label'];?>
</td>
<td>
@ -39,10 +43,11 @@
<?php echo $val;?>
<?php endif; ?>
</td>
<td>
<td style="text-align: center">
<a class="remove" href="index/remove/critere/<?php echo $critere;?>">
<img src="/themes/default/images/cross.png" />
<img width="14px;" src="/themes/default/images/cross.png" />
</a>
<img src="/themes/default/images/help.png" />
</td>
</tr>
<?php endif;?>

View File

@ -1,7 +1,11 @@
<div id="juridique">
<ul id="fieldsblock">
<li><?php echo $this->Field('cj', $this->fields->get('cj'));?></li>
<li style="background-image:none;height:80px;"><?php echo $this->Field('cj', $this->fields->get('cj'), 'text');?></li>
<li style="background-image:none;height:80px;">
<i>Indiquez les formes juridiques ou les codes (insee) sur un deux ou quatres chiffres séparés par des virgules.
Si vous disposez d'une liste sous forme excel glissez le fichier dans l'encadré</i>
<?php echo $this->Field('cj', $this->fields->get('cj'), 'text');?>
</li>
<li><?php echo $this->Field('actifEco', $this->fields->get('actifEco'));?></li>
<li><?php echo $this->Field('procolHisto', $this->fields->get('procolHisto'));?></li>
<li><?php echo $this->Field('tvaIntraValide', $this->fields->get('tvaIntraValide'));?></li>

View File

@ -14,7 +14,6 @@ set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
@ -30,7 +29,7 @@ try {
array(
'help|?' => "Aide.",
'id=s' => "Identifiant du traitement",
'file=s' => "Traitement manuel avec spécification du fichier"
'file=s' => "Identifiant pour les traitements par fichier"
)
);
$opts->parse();
@ -55,22 +54,90 @@ try {
}
//Définition bdd metier
try {
$dbMetier = Zend_Db::factory('Mysqli', $dbConfig->jo);
$dbMetier = Zend_Db::factory($dbConfig->jo);
} catch ( Exception $e ) {
exit ( $e->getMessage() );
}
if ($opts->id) {
$commandesM = new Table_EnrichissementCommandes($db);
$commande = $commandesM->find(intval($opts->id))->current();
$liste = array();
if ($opts->id)
{
} else {
//$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);
$file = $opts->file;
//$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)
{
}
if ( count($identifiants)>0 && count($dataProfil)>0 )
{
$outFile = uniqid($commande->reference.'-').'.csv';
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]) ) {
$sql.= '';
} 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, ',', '"');
}
$model = $sql;
foreach ($identifiants as $siret )
{
$sql = $model .' FROM etablissements_act WHERE siren='.substr($siret,0,9).' AND nic='.substr($siret,9,5);
$result = $dbMetier->fetchAll($sql);
$tabData = $result[0];
//Trier pour la sortie
$tabSortie = array();
foreach($tabEntete as $key){
$tabSortie[] = isset($tabData[$key]) ? $tabData[$key] : '';
}
fputcsv($fp, $tabSortie, ',', '"');
$row++;
}
echo $row .' Lignes !';
fclose($fp);
}
/* == FUNCTION == */

188
batch/extract.php Normal file
View File

@ -0,0 +1,188 @@
<?php
// 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'
);
require_once APPLICATION_PATH . '/../library/Zend/Loader/Autoloader.php';
Class extract
{
protected $db;
protected $dbMetier;
protected $reference;
public function __construct($reference)
{
$this->reference = $reference;
$dbConfig = new Zend_Config_Ini(APPLICATION_PATH . '/configs/configuration.ini', 'databases');
try {
$this->db = Zend_Db::factory($dbConfig->db);
} catch ( Exception $e ) {
exit ( $e->getMessage() );
}
}
public function getHttp()
{
/* Depuis le navigateur */
}
protected function getCj($liste)
{
foreach($liste as $valeur)
{
if(strlen($valeur) < 5) {
$sql = $this->db->select('formejuridique', array('fjCode'))
->from('formejuridique')
->where('fjCode LIKE "'.$valeur.'%"');
} else {
$sql = $this->db->select('formejuridique', array('fjCode'))
->from('formejuridique')
->where('fjCode = "'.$valeur.'"');exit;
}
$result = $this->db->fetchAll($sql);
foreach ($result as $code) {
if(strlen($code['fjCode']) > 2) {
$return[] = $code['fjCode'];
}
}
}
return ($return);
}
protected function localisationArbo($name, $valeur)
{
if(strlen($valeur) == 2) {
switch($name) {
case 'adr_reg':
$return = array();
$sql = $this->db->select()
->from('departements')
->join(array('cp' => 'codepostaux'), 'cp.codepos LIKE CONCAT(departements.numdep, "%")', array('INSEE'))
->where('codeRegionInsee ='.$valeur);
$result = $this->db->fetchAll($sql);
foreach ($result as $res) {
$return[] = trim($res['INSEE']);
}
break;
case 'adr_dept':
$return = array();
$sql = $this->db->select()
->from('departements')
->join(array('cp' => 'codepostaux'), 'cp.codepos LIKE CONCAT(departements.numdep, "%")', array('INSEE'))
->where('numdep ='.$valeur);
$result = $this->db->fetchAll($sql);
foreach ($result as $res) {
$return[] = trim($res['INSEE']);
}
break;
}
}
return ($return);
}
public function getMinMax($name, $valeur)
{
$valeur = explode(',', $valeur);
if(count($valeur) > 1)
{
$sql = 'SELECT min, max FROM minmax WHERE cle ="'.$name.'"';
$result = $this->db->query($sql);
$result = $result->fetchAll();
if(empty($valeur[0])){
echo $name;
$valeur[0] = $result[0]['min'];
}
if(empty($valeur[1])){
$valeur[1] = $result[0]['max'];
}
}
return ($valeur);
}
public function getCli()
{
require_once('Scores/Ciblage.php');
//require_once('Scores/Field.php');
$sql = 'SELECT id, idDefinition, uniteInsee FROM comptages WHERE id = '.$this->reference;
$fetch = $this->db->query($sql);
$result = $fetch->fetchAll();
$idComptage = $result[0]['id'];
$uniteInsee = $result[0]['uniteInsee'];
$sql = 'SELECT id, criteres.criteres FROM criteres WHERE id ='.$result[0]['idDefinition'];
$fetch = $this->db->query($sql);
$result = $fetch->fetchAll();
$idCriteres = $result[0]['id'];
$structure = json_decode($result[0]['criteres']);
$element = array();
foreach ($structure as $name => $valeur){
if($name == 'adr_com') {
$liste = explode(',', $valeur);
$codes = array();
foreach ($liste as $element) {
$val = explode(':', $element);
if(!empty($val[1]))
$codes = array_merge($this->localisationArbo($val[0], $val[1]), $codes);
}
$array['adr_com'] = $codes;
}
else if($name == 'cj') {
$array['cj'] = $this->getCj(explode(',', $valeur));
}
else if($name == 'ape_etab')
$array['ape_etab'] = explode(',', $structure->ape_etab);
else {
$valeur = $this->getMinMax($name, $valeur);
$array[$name] = $valeur;
}
}
$ciblage = new Ciblage($array, true);
$res = $ciblage->execute(true);
$data = array(
'idComptage' => $idComptage,
'idCriteres' => $idCriteres,
'idProfil' => 1,
'reference' => 'batch',
'identifiants' => json_encode($res),
'nbLigneTotales' => count($res),
'nbLigneTraites' => count($res),
'uniteInsee' => $uniteInsee,
'error' => 0
);
$this->db->insert('enrichissement_identifiants',$data);
$fd = fopen($idComptage.'_batch'.date('Y-m-d-hms').'.csv', 'x+');
try {
$array = array();
foreach($res as $field) {
fputcsv($fd, array($field), ';');
}
} catch(Exception $e) {
echo $e->getMessage();
}
fclose($fd);
echo count($res).' Success !';
}
}
$a = new extract('36');
$a->getCli();

View File

@ -80,12 +80,15 @@ class Application_Controller_Plugin_Auth extends Zend_Controller_Plugin_Abstract
}
}
if ( $auth && $auth->getIdentity()->profil=='SuperAdministrateur' ){
if ( APPLICATION_ENV=='development' && $auth && $auth->getIdentity()->idClient==1 ) {
$layout = Zend_Layout::getMVCInstance();
$view = $layout->getView();
$view->admin = true;
} elseif ( $auth && $auth->getIdentity()->profil=='SuperAdministrateur' ){
$layout = Zend_Layout::getMVCInstance();
$view = $layout->getView();
$view->admin = true;
}
}
}
}

View File

@ -6,10 +6,11 @@ Class Ciblage
private $sphinx;
private $alpha = '';
private $presentRcs = 0;
private $need;
public $index = 'ciblage';
public $nb_results = 5000;
public $nb_results = 50000;
public $max_results = 500000;
public $mysql_host = '192.168.78.230';
@ -24,18 +25,21 @@ Class Ciblage
protected function setMinMax($name, $valeur)
{
if(!empty($name)) {
$default = Fields::getMinMax($name);
if(!$this->need) {
if(!empty($name)) {
$default = Fields::getMinMax($name);
if(empty($valeur[0])){$valeur[0] = $default[0]['min'];}
if(empty($valeur[1])){$valeur[1] = $default[0]['max'];}
if(empty($valeur[0])){$valeur[0] = $default[0]['min'];}
if(empty($valeur[1])){$valeur[1] = $default[0]['max'];}
}
return ($valeur);
}
return ($valeur);
}
public function __construct($structure, $need = false)
{
$this->need = true;
$this->sphinx = new SphinxClient();
$this->sphinx->SetServer($this->sphinx_host, $this->sphinx_port);
$this->sphinx->SetMatchMode(SPH_MATCH_EXTENDED2);
@ -75,13 +79,32 @@ Class Ciblage
return ($resSphinx['total_found']);
}
protected function getSiret($structure)
{
$siret = array();
foreach($structure['matches'] as $element)
{
$siret[] = $element['attrs']['siren'].$element['attrs']['nic'];
}
return ($siret);
}
public function execute($need = false)
{
$resSphinx = $this->sphinx->Query($this->alpha, $this->index);
/* Retourne les resultats */
if($need) {
return ($resSphinx);
}
$return = array();
$limit = 0;
do {
$this->sphinx->SetLimits($limit, 1000, 50000);
$resSphinx = $this->sphinx->Query($this->alpha, $this->index);
if(is_array($resSphinx))
$return = array_merge($return, $this->getSiret($resSphinx));
$limit = $limit + 1000;
}while($limit < $resSphinx['total_found']);
return ($return);
} else
$resSphinx = $this->sphinx->Query($this->alpha, $this->index);
return ($resSphinx['total_found']);
}
@ -145,14 +168,6 @@ Class Ciblage
$this->setFilter('siege', $valeur);
}
protected function adr_cp($valeur) {
$this->setFilter('adr_cp', $valeur);
}
protected function adr_dep($valeur) {
$this->setAlpha('adr_dep', $valeur);
}
protected function adr_com($valeur) {
$this->setFilter('adr_com', $valeur);
}
@ -209,7 +224,7 @@ Class Ciblage
}
protected function teff_etab($valeur) {
$valeur = $this->setMinMax($name, $valeur);
//$valeur = $this->setMinMax($name, $valeur);
$this->setFilterRange('teff_etab', $valeur);
}

View File

@ -3,45 +3,45 @@ class Enrichissement
{
/**
* Déclaration des colonnes de la table de données pour la transposition
*
* siren + nic + presentRcs
*/
protected $columns = array(
'id' => array(),
'id' => array(), //Non utilisé
'source' => array(),
'source_id' => array(),
'triCode' => array(),
'autre_id' => array(),
'siren' => array(),
'nic' => array(),
'siren' => array(), //Obligatoire
'nic' => array(), //Obligatoire
'actif' => array(
'value' => array(
'values' => array(
'1' => "actif",
'0' => "inactif",
)
),
'siege' => array(
'value' => array(
'values' => array(
'1' => "Etablissement Siege",
'0' => "Etablissement Secondaire",
)
),
'raisonSociale' => array(),
'enseigne' => array(),
'sigle' => array(),
'raisonSociale' => array(), //Raison Sociale
'enseigne' => array(), //Enseigne
'sigle' => array(), //Sigle
'identite_pre' => array(),
'marques' => array(),
'adr_num' => array(),
'adr_btq' => array(),
'adr_typeVoie' => array(),
'adr_libVoie' => array(),
'adr_comp' => array(),
'adr_cp' => array(),
'adr_ville' => array(),
'adr_dep' => array(),
'adr_com' => array(),
'tel' => array(),
'fax' => array(),
'cj' => array(),
'adr_num' => array(), //Adresse
'adr_btq' => array(), //Adresse
'adr_typeVoie' => array(), //Adresse
'adr_libVoie' => array(), //Adresse
'adr_comp' => array(), //Adresse - Complément
'adr_cp' => array(), //Adresse
'adr_ville' => array(), //Adresse
'adr_dep' => array(), //Département | Code Commune
'adr_com' => array(), //Code Commune
'tel' => array(), //Telephone
'fax' => array(), //Fax
'cj' => array(), //Forme Juridique
'capital' => array(),
'capitalDev' => array(),
'capitalSrc' => array(),
@ -133,10 +133,40 @@ class Enrichissement
'label' => "Sigle",
'column' => 'sigle'
),
'identite_pre' => array(
'label' => "Identite Précédente",
'column' => 'identite_pre'
),
'marques' => array(
'label' => "Marques déposées",
'column' => 'marques'
),
'adresse' => array(
'label' => 'Adresse',
'column' => 'adresse',
'sql' => "CONCAT_WS(' ', adr_num, adr_btq, adr_typeVoie, adr_libVoie) as adresse",
),
'adr_comp' => array(
'label' => 'Adresse - Complément',
'column' => 'adr_comp',
),
'codepostal' => array(
'label' => 'Code Postal',
'column' => 'adr_cp',
),
'departement' => array(
'label' => 'Département',
'column' => 'adr_dep',
),
'ville' => array(
'label' => 'Ville',
'column' => 'adr_ville',
),
'codecommune' => array(
'label' => 'Code Commune',
'column' => 'codecom',
'sql' => 'CONCAT(adr_dep, adr_com) as codecom',
),
'tel' => array(
'label' => "Téléphone",
'column' => 'tel'
@ -151,16 +181,43 @@ class Enrichissement
),
'dirigeant' => array(
'label' => "Dirigeant",
'column' => array('dirCiv', 'dirNom', 'dirPrenom', 'dirDateNaiss', 'dirFct')
'column' => 'dirigeant',
'sql' => "CONCAT_WS(' ', dirCiv, dirNom, dirPrenom) AS dirigeant",
),
'dirigeantFct' => array(
'label' => "Dirigeant - Fonction",
'column' => 'dirFct',
),
'dirigeantnaiss' => array(
'label' => "Dirigeant - Date de naissance",
'column' => 'dirFct'
),
'nafetablissement' => array(
'label' => "Code NAF Etablissement",
'column' => 'ape4_etab'
),
'nafentreprise' => array(
'label' => "Code NAF Entreprise",
'column' => 'ape4_entrep'
),
);
public function __construct(){}
public function getFields()
{
return $this->fields;
}
public function getColumnValue($key)
{
if ( array_key_exists($key, $this->columns) ) {
if ( array_key_exists('values', $this->columns[$key]) && count($this->columns[$key]['values'])>0 ){
return $this->columns[$key]['values'];
}
}
return false;
}
}

View File

@ -375,6 +375,32 @@ Class Fields
'action' => 'geographique',
'title' => 'Localisation'
),
'adr_dept' => array(
'label' => 'Liste départements',
'fields' => array(
'text' => array('value' => null),
'textarea' => array('value' => null)
),
'famille' => 'geographique',
'activated' => true,
'type' => 'textarea',
'class' => null,
'action' => '',
'title' => 'Localisation'
),
'adr_reg' => array(
'label' => 'Liste code région',
'fields' => array(
'text' => array('value' => null),
'textarea' => array('value' => null)
),
'famille' => 'geographique',
'activated' => true,
'type' => 'textarea',
'class' => null,
'action' => '',
'title' => 'Localisation'
),
//juridique
'cj' => array(
'label' => 'Forme Juridique',
@ -658,7 +684,7 @@ Class Fields
$val = $session->getCriteres();
}
$values = array();
unset($val['vil']);
foreach($val as $key => $item)
{
if($item != '') {
@ -669,7 +695,15 @@ Class Fields
{
$values[$key] = explode(',', $item);
} else if (!empty($this->fields[$key]['action'])) {
$values[$key] = $this->selectArbo($key, $item);
if($key == 'adr_reg' or $key == 'adr_dept') {
$key = 'adr_com';
}
if(!empty($values[$key])) {
$values[$key] = array_merge($this->selectArbo($key, $item), $values[$key]);
}
else {
$values[$key] = $this->selectArbo($key, $item);
}
} else {
$values[$key] = $item;
}
@ -687,24 +721,32 @@ Class Fields
case 'ape_entrep' :
$nafs = explode(',', $valeur);
foreach($nafs as $naf) {
if($naf != ' ')
if($naf != ' ') {
$values = array_merge($values, $this->nafArbo($name, $naf));
}
}
break;
case 'adr_dept':
case 'adr_reg':
case 'adr_com':
$valeurs = explode(',', $valeur);
foreach($valeurs as $element) {
$array = $this->localisationArbo($name, $element);
if(!empty($array))
$values = array_merge($values, $array);
if(!empty($element)) {
$val = explode(':', $element);
$array = array_diff($this->localisationArbo($val[0], $val[1]), $values);
if(!empty($array)) {
$values = array_merge($values, $array);
}
}
}
break;
case 'cj':
$valeurs = explode(',', $valeur);
foreach($valeurs as $valeur)
$values = array_merge($values, $this->fj($name, $valeur));
foreach($valeurs as $valeur) {
if($valeur != ' ' and !empty($valeur))
$values = array_merge($values, $this->fj($name, $valeur));
}
}
return ($values);
}
@ -715,11 +757,11 @@ Class Fields
if(strlen($valeur) < 5) {
$sql = $table->select('formejuridique', array('fjCode'))
->where('fjCode LIKE "'.$valeur.'%"');
} else
} else {
$sql = $table->select('formejuridique', array('fjCode'))
->where('fjCode = "'.$valeur.'"');
}
$result = $table->fetchAll($sql)->toArray();
foreach ($result as $code) {
if(strlen($code['fjCode']) > 2) {
$return[] = $code['fjCode'];
@ -730,72 +772,44 @@ Class Fields
protected function localisationArbo($name, $valeur)
{
if(strlen($valeur) <= 3) {
switch($valeur[0]) {
case 'R':
if(strlen($valeur) == 2) {
switch($name) {
case 'adr_reg':
$table = new Table_Departements();
$sql = $table->select()
->from('departements')
->join(array('cp' => 'codepostaux'), 'cp.codepos LIKE CONCAT(departements.numdep, "%")', array('INSEE'))
->where('codeRegionInsee ='.substr($valeur, 1, strlen($valeur)))
->where('codeRegionInsee ='.$valeur)
->setIntegrityCheck(false);
$result = $table->fetchAll($sql)->toArray();
foreach ($result as $res) {
$return[] = $res['INSEE'];
$return[] = trim($res['INSEE']);
}
break;
case 'D':
case 'adr_dept':
$table = new Table_Departements();
$sql = $table->select()
->from('departements')
->join(array('cp' => 'codepostaux'), 'cp.codepos LIKE CONCAT(departements.numdep, "%")', array('INSEE'))
->where('numdep ='.substr($valeur, 1, strlen($valeur)))
->where('numdep ='.$valeur)
->setIntegrityCheck(false);
$result = $table->fetchAll($sql)->toArray();
foreach ($result as $res) {
$return[] = $res['INSEE'];
$return[] = trim($res['INSEE']);
}
break;
}
} else
return (array($valeur));
return ($return);
}
protected function deptArbo($name, $valeur)
{
if(strlen($valeur) < 5){
if($valeur[0] == 'D') {
$codepostaux = new Table_Codepostauxs();
$sql = $codepostaux->select()->where('Codepos LIKE "'.substr($valeur, 1).'%"');
$codes = $codepostaux->fetchAll($sql)->toArray();
foreach($codes as $code) {
$values[] = $code['Codepos'];
}
} else if($valeur[0] == 'R') {
$departements = new Table_Departements();
$codepostaux = new Table_Codepostauxs();
$sql = $departements->select()->from('departements', array('numdep'))->where('codeRegionInsee = ?', substr($valeur, 1));
$results = $departements->fetchAll($sql)->toArray();
foreach($results as $result) {
$sql = $codepostaux->select()->from('codepostaux', array('Codepos'))->where('Codepos LIKE "'.$result['numdep'].'%"');
$codes = $codepostaux->fetchAll($sql)->toArray();
foreach($codes as $code) {
$values[] = $code['Codepos'];
}
}
}
return ($values);
}
return (array($valeur));
}
protected function nafArbo($key, $valeur)
{
$value = array();
$table = new Table_Nafs();
$valeur = trim($valeur);
if(strlen($valeur) == 1)
{
@ -816,13 +830,17 @@ Class Fields
return ($value);
}
public function __construct()
public function __construct($batch = false)
{
foreach($this->fields as $name => $valeur) {
if($this->fields[$name]['type'] == 'interval') {
$minmax = $this->getMinMax($name);
$this->fields[$name]['fields'][$this->fields['type']]['value']
= array($minmax[0]['min'], $minmax[0]['max']);
if(!$batch) {
foreach($this->fields as $name => $valeur) {
if($this->fields[$name]['type'] == 'interval') {
$minmax = $this->getMinMax($name);
if(!empty($minmax)) {
$this->fields[$name]['fields'][$this->fields[$name]['type']]['value']
= array($minmax[0]['min'], $minmax[0]['max']);
}
}
}
}
}

93
library/Scores/Mail.php Normal file
View File

@ -0,0 +1,93 @@
<?php
class Mail
{
protected $config;
protected $mail;
/**
* Gestion de l'envoi des mails en fonction de la configuration
*/
public function __construct()
{
$this->config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/configuration.ini', 'mail');
$this->mail = new Zend_Mail();
if ($this->config->method == 'smtp') {
$tr = new Zend_Mail_Transport_Smtp($this->config->smtp_host);
$this->mail->setDefaultTransport($tr);
} else {
$tr = new Zend_Mail_Transport_Sendmail();
$this->mail->setDefaultTransport($tr);
}
}
/**
* Champ From en fonction de la clé de configuration (configuration.ini)
* @param string $configKey
*/
public function setFrom($configKey)
{
$email = $this->config->$configKey;
$this->mail->setFrom($email, ucfirst($configKey));
}
/**
* Champ To en fonction de la clé de configuration (configuration.ini)
* @param string $configKey
*/
public function addToKey($configKey)
{
$email = $this->config->$configKey;
$this->mail->addTo($email, ucfirst($configKey));
}
/**
* Ajout d'un champ To en spécifiant l'email et le nom qui doit apparaitre
* @param string $email
* @param string $nom
*/
public function addTo($email, $nom = '')
{
$this->mail->addTo($email, $this->txtConvert($nom));
}
/**
* Définit le sujet de l'email
* @param string $texte
*/
public function setSubject($texte = '')
{
$this->mail->setSubject($this->txtConvert($texte));
}
/**
* Définit le corps de l'email au format texte
* @param string $texte
*/
public function setBodyTexte($texte = '')
{
$this->mail->setBodyText($this->txtConvert($texte));
}
/**
* Définit le corps de l'email au format html
* @param string $html
*/
public function setBodyHtml($html = '')
{
$this->mail->setBodyHtml($this->txtConvert($html));
}
/**
* Envoi de l'emai
*/
public function send()
{
$this->mail->send();
}
//We suppose that character encoding of strings is UTF-8 on PHP script.
protected function txtConvert($string) {
return mb_convert_encoding($string, 'ISO-8859-1', 'UTF-8');
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 900 B

View File

@ -40,7 +40,7 @@ $(document).ready(function(){
}
});
$('textarea.complitedDep').autocomplete({
$('#textarea_adr_dept').autocomplete({
delay:600,
source: function(request, response) {
$.getJSON('/geographique/completed/dep/1', { q: extractLast( request.term ) },
@ -57,7 +57,7 @@ $(document).ready(function(){
}
});
$('textarea.complitedReg').autocomplete({
$('#textarea_adr_reg').autocomplete({
delay:600,
source: function(request, response) {
$.getJSON('/geographique/completed/reg/1', { q: extractLast( request.term ) },

View File

@ -32,7 +32,7 @@ $(document).ready(function(){
bgiframe: true,
title: title,
width: 500,
height: 300,
height: 400,
modal: true,
open: function(event, ui) {
$(this).html('Chargement...');

View File

@ -5,7 +5,7 @@ $(document).ready(function(){
function(){ $('#control').css('display', 'none'); }
);
$('#saveciblage').on('click', function(){
$('.saveciblage').on('click', function(){
var title = 'Sauvegarde du profil de ciblage';
var href = $(this).attr('href');
var dialogOpts = {

View File

@ -0,0 +1,14 @@
$(document).ready(function(){
$('.upload').change(function(){
term = $(this).val();
a = term.split('/');
$.ajax(
'/upload/arborescance/'+a,
{
type : "GET",
cache : false,
data : $(this).serializeArray()
}
);
});
});

View File

@ -5,7 +5,7 @@
}
#geographique li {
height:20px;
height:30px;
padding:5px;
border:1px solid silver;
margin-top:2px;

View File

@ -15,6 +15,18 @@ em { font-style: italic }
a img { border:none } /* Gets rid of IE's blue borders */
#Valide
{
padding:5px;
border:1px solid black;
background-color:#182838;
}
#Valide a
{
color:white;
text-decoration: none;
}
/* Main
----------------------------------*/
body {