odea/library/Scores/Fields.php
Michael RICOIS af98ca2d07 Correct typo
2013-03-19 10:44:15 +00:00

1280 lines
42 KiB
PHP

<?php
class Scores_Fields
{
/**
* Fields options to display
* [name] => array(
* label =>
* fields => array(
* type => array()
* ...
* )
* famille =>
* activated =>
* title =>
* )
* )
*
* name : the key to retrieve field parameters
* label : the string to display as title
* famille : the key to identify where familly the field belongs to
* activated : true or false
* title : Text to display as info or help
*
* fields : define all different fields for the same element
* => type : which type of element (select, text, tree, ...), it's the key for array
* => value :
* => label (optional) :
* => class :
* @var array
*/
protected $fields = array
(
'siege' => array (
'label' => "Type d'établissement",
'fields' => array(
'select' => array('value' => array('1' => 'Sièges', '0' => 'Secondaires')),
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Aide',
),
'groupe' => array(
'label' => "Appartient à un groupe",
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non')),
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Possibilité de restreindre la sélection aux entreprises appartenant à un groupe',
),
'tel' => array(
'label' => 'Téléphone renseigné',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non'))
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Possibilité de restreindre la sélection aux établissements ayant un numéro de téléphone renseigné',
),
'fax' => array(
'label' => 'Télécopie renseignée',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non'))
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Possibilité de restreindre la sélection aux établissements ayant un numéro de télécopie renseigné',
),
'web' => array(
'label' => 'Site Web renseigné',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non'))
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Possibilité de restreindre la sélection aux entreprises ayant un site web renseigné',
),
'mail' => array(
'label' => 'Email de contact renseigné',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non'))
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Possibilité de restreindre la sélection aux établissements ayant une adresse email de contact renseignée',
),
'presentRcs' => array(
'label' => 'Etablissement présent au RNCS',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non'))
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Inclure ou exclure les établissements présents au Registre National du Commerce et des Sociétés',
),
'adrDom' => array(
'label' => 'Adresse de domiciliation',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non'))
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Inclure ou exclure les établissements situés à une adresse de domiciliation suspectée ou avérée',
),
'dirNom' => array(
'label' => 'Nom du principal dirigeant présent',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non'))
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Inclure ou exclure les entreprises ayant un principal dirigeant renseigné',
),
'nbMPubli' => array(
'label' => 'Marchés publiques remportés',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non'))
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Inclure/Exclure les entreprises ayant remportés des marchés publics. Une entreprise remportant des marchés publics est à jour de ses obligations fiscales et sociales, affirme sa capacité structurelle à répondre à la commande publique (capacité financière, personnel, encadrement, ...), dispose d\'une assurance pour les risques professionnels, a communiqué ses éléments financiers au pouvoir adjudicateur',
),
'dateCrea_ent' => array(
'label' => "Date de création de l'entreprise",
'fields' => array(
'intervalDate' => array('value' => null)
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Limiter la sélection aux entreprises créées entre 2 dates, avant une date ou après une date',
),
'dateCrea_etab' => array(
'label' => "Date de création de l'établissement",
'fields' => array(
'intervalDate' => array('value' => null )
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Limiter la sélection aux établissements créés entre 2 dates, avant une date ou après une date',
),
'action' => array(
'label' => 'Présence d\'actionnaires',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non'))
),
'famille' => 'entreprise',
'activated' => true,
'title' => 'Inclure ou exclure de la sélection les entreprises ayant au moins un actionnaire de renseigné',
),
'nbActio' => array(
'label' => "Nombre d'actionnaires connus",
'fields' => array(
'interval' => array('value' => null)
),
'unit' => 'actionnaire',
'famille' => 'entreprise',
'activated' => true,
'title' => 'Limiter la sélection aux entreprises ayant de 1 à N actionnaire(s) renseignée(s)',
),
'participation' => array(
'label' => "Présence de participations",
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non'))
),
'famille' => 'entreprise',
'activated' => true,
),
'nbPart' => array(
'label' => 'Nombre de participations connues',
'fields' => array(
'interval' => array('value' => array('0', '1000'))
),
'unit' => 'participation',
'famille' => 'entreprise',
'activated' => true,
'title' => 'Limiter la sélection aux entreprises ayant de 1 à N participation(s) renseignée(s)',
),
'ape_etab' => array(
'label' => "Activité de l'établissement (Code NAF)",
'fields' => array(
'tree' => array('value' => null, 'action' => 'naf', 'title' => "Arborescence de code NAF établissement"),
'text' => array('value' => null, 'label' => "Recherche de code NAF", 'title'=>"Sélection de code NAF établissement"),
'list' => array('value' => null, 'label' => "Liste de code NAF", 'title'=>"Liste de code NAF établissement"),
),
'famille' => 'economique',
'activated' => true,
),
'ape_entrep' => array(
'label' => "Activité de l'entreprise (Code NAF)",
'fields' => array(
'tree' => array('value' => null, 'action' => 'naf', 'title' => "Arborescence de code NAF entreprise"),
'text' => array('value' => null, 'label' => "Recherche de code NAF", 'title'=>"Sélection de code NAF entreprise"),
'list' => array('value' => null, 'label' => "Liste de code NAF", 'title'=>"Liste de code NAF entreprise"),
),
'famille' => 'economique',
'activated' => true,
),
'NaceEtab' => array(
'label' => 'Code NACE de l\'établissement',
'fields' => array(
'text' => array('value' => null),
'textarea' => array('value' => null)
),
'famille' => 'economique',
'activated' => true,
'title' => 'Limiter la sélection aux établissements ayant des NACE spécifiques (Nomenclature d\'Activités Européenne)',
),
'NaceEntrep' => array(
'label' => 'Code NACE de l\'entreprise',
'fields' => array(
'text' => array('value' => null),
'textarea' => array('value' => null)
),
'famille' => 'economique',
'activated' => true,
'title' => 'Limiter la sélection aux entreprises ayant des NACE spécifiques (Nomenclature d\'Activités Européenne)',
),
'age_etab' => array(
'label' => 'Age de l\'établissement',
'fields' => array(
'interval' => array('value' => null)
),
'famille' => 'economique',
'activated' => true,
'title' => 'Limiter la sélection aux établissements ayant un age spécifique',
'unit' => 'an',
),
'age_entrep' => array(
'label' => 'Age de l\'entreprise',
'fields' => array(
'interval' => array('value' => null)
),
'famille' => 'economique',
'activated' => true,
'title' => 'Limiter la sélection aux entreprises ayant un age spécifique',
'unit' => 'an',
),
'teff_entrep' => array(
'label' => "Tranche d'effectif de l'Entreprise",
'fields' => array(
'selectMultiple' => array(
'value' => array(
'99' => "Unités non employeuses",
'0' => "0 salarié",
'1' => "1 ou 2 salarié(s)",
'2' => "3 à 5 salariés",
'3' => "6 à 9 salariés",
'11' => "10 à 19 salariés",
'12' => "20 à 49 salariés",
'21' => "50 à 99 salariés",
'22' => "100 à 199 salariés",
'31' => "200 à 249 salariés",
'32' => "250 à 499 salariés",
'41' => "500 à 999 salariés",
'42' => "1 000 à 1 999 salariés",
'51' => "2 000 à 4 999 salariés",
'52' => "5 000 à 9 999 salariés",
'53' => "10 000 salariés et plus",
),
),
),
'famille' => 'economique',
'activated' => true,
'title' => "Limiter la sélection aux entreprises ayant certaines tranches de salariés. Attention, pour les unités non employeuses il n'y a pas de salarié au cours de l'année de référence et pas d'effectif au 31/12 ; cette tranche peut contenir quelques effectifs inconnus. A contrario, pour la tranche 0 salarié il n'y a pas d'effectifs au 31/12 mais l'unité a employé des salariés au cours de l'année de référence",
),
'teff_etab' => array(
'label' => 'Tranche d\'effectif de l\'établissement',
'fields' => array(
'selectMultiple' => array(
'value' => array(
'99' => "Unités non employeuses",
'0' => "0 salarié",
'1' => "1 ou 2 salariés",
'2' => "3 à 5 salariés",
'3' => "6 à 9 salariés",
'11' => "10 à 19 salariés",
'12' => "20 à 49 salariés",
'21' => "50 à 99 salariés",
'22' => "100 à 199 salariés",
'31' => "200 à 249 salariés",
'32' => "250 à 499 salariés",
'41' => "500 à 999 salariés",
'42' => "1 000 à 1 999 salariés",
'51' => "2 000 à 4 999 salariés",
'52' => "5 000 à 9 999 salariés",
'53' => "10 000 salariés et plus",
)
),
),
'famille' => 'economique',
'activated' => true,
'title' => "Limiter la sélection aux établissements ayant certaines tranches de salariés. Attention, pour les unités non employeuses il n'y a pas de salarié au cours de l'année de référence et pas d'effectif au 31/12 ; cette tranche peut contenir quelques effectifs inconnus. A contrario, pour la tranche 0 salarié il n'y a pas d'effectifs au 31/12 mais l'unité a employé des salariés au cours de l'année de référence",
),
'nbEtab' => array(
'label' => 'Nombre d\'établissements',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'établissement',
'famille' => 'economique',
'activated' => true,
'title' => 'Limiter la sélection aux entreprises ayant de 1 à N établissements',
),
'eff_entrep' => array(
'label' => "Effectif réel de l'entreprise",
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'employé',
'famille' => 'economique',
'activated' => true,
'title' => 'Limiter la sélection aux entreprises ayant de X à Y salariés',
),
'eff_etab' => array(
'label' => "Effectif réel de l'établissement",
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'employé',
'famille' => 'economique',
'activated' => true,
'title' => 'Limiter la sélection aux établissements ayant de X à Y salariés',
),
'capital' => array(
'label' => 'Capital de l\'entreprise',
'fields' => array(
'interval' => array( 'value' => array('0', '750000'))
),
'unit' => 'euro',
'famille' => 'economique',
'activated' => true,
'title' => "Limiter la sélection aux entreprises disposant d'un capital donné",
),
//geographique
'geo' => array(
'label' => 'Localisation géographique',
'fields' => array(
'tree' => array('value' => null, 'action' => 'geographique', 'title' => "Arborescence géographique"),
'text' => array('value' => null, 'label' => "Recherche", 'title'=>"Recherche géographique"),
),
'famille' => 'geographique',
'activated' => true,
),
'geo_domtom' => array(
'label' => 'Exlcure les DOM-TOM',
'fields' => array(
'checkbox' => array('value' => '1'),
),
'famille' => 'geographique',
'activated' => true,
'title' => 'Exclure les établissements situés dans les DOM-TOM',
),
'geo_etranger' => array(
'label' => 'Exclure les sociétés étrangères',
'fields' => array(
'checkbox' => array('value' => '1'),
),
'famille' => 'geographique',
'activated' => true,
'title' => 'Exclure les entreprises dont l\'établissement siège est situé à l\'étranger',
),
'geo_corse' => array(
'label' => 'Exclure la corse',
'fields' => array(
'checkbox' => array('value' => '1'),
),
'famille' => 'geographique',
'activated' => true,
'title' => 'Exclure les établissements situés en région Corse',
),
'codesinsee' => array(
'label' => 'Liste de codes Insee',
'fields' => array(
'list' => array('title' => "Liste de codes Insee"),
),
'famille' => 'geographique',
'activated' => true,
'title' => 'Liste de codes Insee séparés par des virgules ou des points-virgules',
),
'codespostaux' => array(
'label' => 'Liste de codes postaux',
'fields' => array(
'list' => array('title' => "Liste de codes postaux"),
),
'famille' => 'geographique',
'activated' => true,
'title' => 'Liste de codes postaux séparés par des virgules ou des points-virgules',
),
'codesdepts' => array(
'label' => 'Liste de départements',
'fields' => array(
'list' => array('title' => "Liste de départements"),
),
'famille' => 'geographique',
'activated' => true,
'title' => 'Liste de code départements séparés par des virgules ou des points-virgules',
),
'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' => 'geographique',
'title' => 'Localisation'
),
'zus' => array(
'label' => 'Zones Urbaines Sensibles',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non')),
),
'famille' => 'geographique',
'activated' => true,
'type' => 'select',
'title' => "Inclure/Exclure les établissements situés en Zone Urbaine Sensible (ou ZUS). Les ZUS sont des territoire infra-urbain défini par les pouvoirs publics français bénéficiant d'aides spécifiques sous forme d'exonérations fiscales et sociales.",
/*
pour être la cible prioritaire de la politique de la ville.
La loi n° 96-987 du 14 novembre 1996 relative à la mise en œuvre du Pacte de relance pour la ville a défini dans son article 2
Les zones urbaines sensibles constituent un sous-ensemble de l'ensemble plus large des 2 500 quartiers prioritaires objet des contrats urbains de cohésion sociale (CUCS)3 qui ont succédé aux contrats de ville.',
*/
),
'zru' => array(
'label' => 'Zones de Redynamisation Urbaine',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non')),
),
'famille' => 'geographique',
'activated' => true,
'type' => 'select',
'title' => "Inclure/Exclure les établissements situés en Zone de Redynamisation Urbaine (ou ZRU). Les ZRU sont un sous-ensemble des Zones Urbaines Sensibles et bénéficient d'aides spécifiques sous forme d'exonérations fiscales et sociales.",
),
'zfu' => array(
'label' => 'Zones Franches Urbaines',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non')),
),
'famille' => 'geographique',
'activated' => true,
'type' => 'select',
'title' => "Inclure/Exclure les établissements situés en Zone Franche Urbaine (ou ZFU). Les ZFU sont un sous-ensemble des Zones Urbaines Sensibles et bénéficient d'aides spécifiques sous forme d'exonérations fiscales et sociales.",
),
'cucs' => array(
'label' => 'Contrats Urbains de Cohésion Sociale',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non')),
),
'famille' => 'geographique',
'activated' => true,
'type' => 'select',
'title' => 'Inclure/Exclure les établissements situés en Contrats Urbains de Cohésion Sociale (ou CUCS).',
),
'zrr' => array(
'label' => 'Zones de Revitalisation Rurale',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non')),
),
'famille' => 'geographique',
'activated' => true,
'type' => 'select',
'title' => 'Inclure/Exclure les établissements situés en Zone de Revitalisation Rurale (ou ZRR)',
),
'zafr' => array(
'label' => 'Zones d\'Aides à Finalités Régionales',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non')),
),
'famille' => 'geographique',
'activated' => true,
'type' => 'select',
'title' => "Inclure/Exclure les établissements situés en Zone d'Aide à Finalité Régionale (ou ZAFR)",
),
/*
* Forme Juridique
*/
'cj' => array(
'label' => 'Forme Juridique',
'fields' => array(
'tree' => array('value' => null, 'action' => 'juridique', 'title' => "Arborescence des Formes Juridiques"),
'text' => array('value' => null, 'label' => "Recherche", 'title'=>"Recherche des Formes Juridiques"),
),
'famille' => 'juridique',
'activated' => true,
),
'cjlist' => array(
'label' => 'Liste de formes juridique',
'fields' => array(
'list' => array(),
),
'famille' => 'juridique',
'activated' => true,
'sessionKey' => 'cj',
'title' => 'Liste de codes formes juridiques séparés des virgules ou des points-virgules',
),
'actifEco' => array(
'label' => 'Établissement économiquement actif',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non')),
),
'famille' => 'juridique',
'activated' => true,
'title' => 'Inclure/Exclure les établissements économiquement inactifs : Etablissements présumés fermés (vendus sans formalités), Pli Non Distribué (NPAI)',
),
'procolHisto' => array(
'label' => 'Présence d\'une procédure dans l\'historique',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non')),
),
'famille' => 'juridique',
'activated' => true,
'title' => 'Inclure/Exclure les entreprises ayant déjà été en procédure collective',
),
'tvaIntraValide' => array(
'label' => 'Numéro de TVA intracommunautaire valide',
'fields' => array(
'select' => array('value' => array('1' => 'Oui', '0' => 'Non')),
),
'famille' => 'juridique',
'activated' => true,
'title' => 'Inclure/Exclure les entreprises dont le numéro de TVA intracommunautaire est valide (si non, exclusion d\'office des micro-entreprises fiscales type Auto-entrepreneur)',
),
'dateImmat' => array(
'label' => 'Date d\'immatriculation de l\'entreprise',
'fields' => array(
'intervalDate' => array('value' => null)
),
'famille' => 'juridique',
'activated' => true,
'title' => 'Limiter aux entreprises dont la date de création est comprise entre A et B',
),
//financier
'bilType' => array(
'label' => 'Derniers éléments financiers',
'fields' => array(
'selectMultiple' => array('value' => array(
'1' => 'Inconnus', // I
'2' => 'Réels', // R
'3' => 'Estimés') //E
),
),
'famille' => 'financier',
'activated' => true,
'title' => 'Limiter aux entreprises dont les derniers éléments financiers sont Réels, Estimés ou Inconnus',
),
'avisCs' => array(
'label' => 'Informations de paiements',
'fields' => array(
'selectMultiple' => array('value' => array(
'0' => 'Risque indéterminé',
'1' => 'Aucun risque resencé',
'2' => 'Présence d\'impayé(s)',
'3' => 'Présence de privilèges',
'4' => 'Risque moyen',
'5' => 'Risque important',
'6' => 'Risque très important',
'7' => 'Risque dans le groupe')
),
),
'famille' => 'financier',
'activated' => true,
),
'bilDuree' => array(
'label' => 'Durée du dernier bilan en mois',
'fields' => array(
'selectMultiple' => array(
'value' => array(
'1' => '1 mois',
'2' => '2 mois',
'3' => '3 mois',
'4' => '4 mois',
'5' => '5 mois',
'6' => '6 mois',
'7' => '7 mois',
'8' => '8 mois',
'9' => '9 mois',
'10' => '10 mois',
'11' => '11 mois',
'12' => '12 mois',
'13' => '13 mois',
'14' => '14 mois',
'15' => '15 mois',
'16' => '16 mois',
'17' => '17 mois',
'18' => '18 mois',
'19' => '19 mois',
'20' => '20 mois',
'21' => '21 mois',
'22' => '22 mois',
'23' => '23 mois',
)
)
),
'famille' => 'financier',
'activated' => true,
'title' => 'Limiter aux entreprises dont la durée du dernier bilan est précisée',
),
'bilTca' => array(
'label' => 'Tranche de CA issue du bilan',
'fields' => array(
'selectMultiple' => array('value' => array(
'0' => 'Non déterminée',
'1' => 'de 500K€ à1M€',
'2' => 'de 1 à 2 ME',
'3' => 'de 2 à 5 ME',
'4' => 'de 5 à 10 ME',
'5' => 'de 10 à 20 ME',
'6' => 'de 20 à 50 ME',
'7' => '50 à 100 ME',
'8' => 'de 100 à 200 ME',
'9' => '+ de 200 ME'
)),
),
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont la dernière tranche de Chiffre d'Affaires est précisée (Réel ou Estimé)",
),
'bilAnnee' => array(
'label' => 'Dernière année de bilan',
'fields' => array(
'interval' => array('value' => array('0', '1000'))
),
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont la dernière année de bilan est précisée",
),
'bilCloture' => array(
'label' => 'Dernière date de clôture du bilan',
'fields' => array(
'interval' => array('value' => array('0', '1000'))
),
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le dernier exercice comptable est situé entre 2 dates précises",
),
'bilEE' => array(
'label' => 'Total bilan (EE)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste EE (Montant du poste Total Bilan en Euros) est connu (Chiffres Réels uniquement)",
),
'bilFL' => array(
'label' => 'CA total (FL)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste FL (Montant du Chiffre d'Affaires en Euros) est connu (Chiffres Réels et Estimés)",
),
'bilFK' => array(
'label' => 'Chiffre d\'affaires Export (FK)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste FK (Montant du Chiffre d'Affaires Export en Euros) est connu (Chiffres Réels uniquement)",
),
'bilFR' => array(
'label' => 'Produits d\'Exploitation (FR)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'type' => 'interval',
'class' => null,
'title' => "Limitation aux entreprises dont le poste FR (Montant des Produits d'Exploitation en Euros) est connu (Chiffres Réels uniquement)",
),
'bilGF' => array(
'label' => 'Charges d\'Exploitation (GF)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste GF (Montant des Charges d'Exploitation en Euros) est connu (Chiffres Réels uniquement)",
),
'bilGP' => array(
'label' => 'Charges Financières (GP)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste GP (Montant des Charges Financières en Euros) est connu (Chiffres Réels uniquement)",
),
'bilGW' => array(
'label' => 'R.C.A.I - Résultat courant av. impôt (GW)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste GW (Montant du Résultat Courant Avant Impôt en Euros) est connu (Chiffres Réels uniquement)",
),
'bilHD' => array(
'label' => 'Produits Exceptionnels (HD)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste HD (Montant des Produits Exceptionnels en Euros) est connu (Chiffres Réels uniquement)",
),
'bilHH' => array(
'label' => 'Charges Exceptionnels (HH)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste HH (Montant des Charges Exceptionnels en Euros) est connu (Chiffres Réels uniquement)",
),
'bilHL' => array(
'label' => 'Total des Produits (HL)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste HL (Montant du Total des Produits en Euros) est connu (Chiffres Réels uniquement)",
),
'bilHM' => array(
'label' => 'Total des Charges (HM)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste HM (Montant du Total des Charges en Euros) est connu (Chiffres Réels uniquement)",
),
'bilHN' => array(
'label' => 'Résultat (HN)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'euro',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste HN (Montant du Résultat Net en Euros) est connu (Chiffres Réels uniquement)",
),
'bilYP' => array(
'label' => 'Effectif salarié (YP)',
'fields' => array(
'interval' => array('value' => array('0', '10000000'))
),
'unit' => 'salarié',
'famille' => 'financier',
'activated' => true,
'title' => "Limitation aux entreprises dont le poste YP (Effectif salarié de l'entreprise) est connu (Chiffres Réels uniquement)",
)
);
/**
* Save all information in this array
* The key NB is mandatory as this
* ['NB']['total'] => store the number of elements matches
* ['NB']['insee'] => store the number of elements matches which type is INSEE
* Other keys
* [key][in] => inclusion
* [key][ex] => exclusion
* @var array
*/
protected $ciblage;
protected $total = null;
protected $insee = null;
/**
*
* @param boolean $batch
*/
public function __construct($batch = false)
{
$session = new Zend_Session_Namespace('ciblage');
$this->ciblage = empty($session->ciblage) ? array() : $session->ciblage;
if (isset($this->ciblage['NB']['total'])) { $this->total = $this->ciblage['NB']['total']; }
if (isset($this->ciblage['NB']['insee'])) { $this->insee = $this->ciblage['NB']['insee']; }
if (isset($this->ciblage['NB'])) { unset($this->ciblage['NB']); }
}
/**
* Save data to session
*/
protected function setSession()
{
$session = new Zend_Session_Namespace('ciblage');
$this->ciblage['NB']['total'] = $this->total;
$this->ciblage['NB']['insee'] = $this->insee;
$session->ciblage = $this->ciblage;
}
/**
* After define criteres and no error return, set the session externaly
* @return void
*/
public function setCritereSession()
{
$this->setSession();
}
/**
* Enregistre un critère et sa valeur en effectuant les controls nécesaire
* @param string $key
* Critere key
* @param string $value
* Single value or list of values in string separate by a comma
* @param boolean $ex
* true for an exclude value
* @return boolean
* true if all is ok, false if the key doesn't exist or value is not correct
*/
public function setCritere($key, $value, $ex = false)
{
//Check if the key exist
if ( !array_key_exists($key, $this->fields) ) {
Zend_Registry::get('firebug')->info('CLE INCORRECT');
return false;
}
$sessionKey = $key;
if (array_key_exists('sessionKey', $this->fields[$key])) {
$sessionKey = $this->fields[$key]['sessionKey'];
}
//Remove critere for these values on all type of fields
if ( in_array($value, array('', '-', null)) ) {
unset($this->ciblage[$sessionKey]);
return true;
}
/**
* single
* interval
* multiple
*
*
* date
* min,max
*
*/
//Do some operation on value
$types = array_keys($this->fields[$key]['fields']);
if ( !is_array($value) && !in_array($types[0], array('select', 'checkbox', 'interval', 'intervalDate')) ) {
//Remove all space in string value
$value = str_replace(' ', '', $value);
//Try to detect separator and transform as array
//@todo : Schema a detecter
if ( preg_match_all('/([0-9A-Z]+)(?:,|;)?/', $value, $matches) ){
Zend_Registry::get('firebug')->info($matches);
$value = $matches[1];
}
//Add value to the existing
if (array_key_exists($sessionKey, $this->ciblage)) {
if ($ex) {
$value = array_merge($this->ciblage[$sessionKey]['ex'], $value);
} else {
$value = array_merge($this->ciblage[$sessionKey]['in'], $value);
}
}
}
if ( in_array($types[0], array('interval', 'intervalDate')) ) {
$value = explode(',', $value);
}
//Remove duplicate values
if (is_array($value) ) {
$value = array_unique($value);
}
//Before to save the value
switch ( $types[0] ) {
case 'intervalDate':
unset($this->ciblage[$sessionKey]['in']);
break;
case 'interval':
//Read min max
$minmaxM = new Application_Model_CiblageMinMax();
$minmax = $minmaxM->find($sessionKey)->current();
if ($minmax!==false) {
$valMin = $minmax->min;
$valMax = $minmax->max;
if ($value[0]<$valMin) {
$value[0] = $valMin;
}
if ($value[0]>$valMax) {
return false;
}
if ($value[1]>$valMax) {
$value[1]=$valMax;
}
if ($value[1]<$valMin) {
return false;
}
}
break;
case 'checkbox':
if ( $value==0 ) {
unset($this->ciblage[$sessionKey]);
}
break;
case 'tree':
//@todo : Check if values exist
break;
case 'list':
break;
}
//Save the value
if ($ex) {
Zend_Registry::get('firebug')->info('Exclude : ');
Zend_Registry::get('firebug')->info($value);
$this->ciblage[$sessionKey]['ex'] = $value;
} else {
Zend_Registry::get('firebug')->info('Include: ');
Zend_Registry::get('firebug')->info($value);
$this->ciblage[$sessionKey]['in'] = $value;
}
return true;
}
/**
* Définir les critères en une fois
* @param array $criteres Criteres as array with key => val
* @param boolean $inSession pour désactiver l'enregistrement en session
*/
public function setCriteres($criteres, $inSession = true)
{
$this->ciblage = $criteres;
if ( $inSession ) {
$this->setSession();
}
}
/**
* Désactivation d'un critère
* @param string $key
*/
public function unsetCritere($key)
{
if( key_exists($key, $this->ciblage) ) {
unset($this->ciblage[$key]);
$this->setSession();
}
}
/**
* Permet de supprimer une valeur dans une clef de session
* @param string $key
* @param int $pos
* @param boolean $ex
*/
public function unsetCritereValue($key, $pos, $ex = false)
{
if(key_exists($key, $this->ciblage)) {
if ($ex) {
$critereValues = $this->ciblage[$key]['ex'];
unset($critereValues[$pos]);
$this->ciblage[$key]['ex'] = array_values($critereValues);
} else {
$critereValues = $this->ciblage[$key]['in'];
unset($critereValues[$pos]);
$this->ciblage[$key]['in'] = array_values($critereValues);
}
$this->setSession();
}
}
/**
* Récupération de la valeur d'un critère
* @param string $key
*/
public function getCritere($key)
{
if(array_key_exists($key, $this->ciblage)) {
return $this->ciblage[$key];
}
return null;
}
/**
* Récupération des critères et de leurs valeurs
*/
public function getCriteres()
{
return $this->ciblage;
}
/**
* Définit un élément de comptage
* @param string $element
* @param integer $nb
*/
public function setNb($element, $nb)
{
$this->{$element} = $nb;
}
/**
* Récupére la valeur d'un élément de comptage
* @param string $element
*/
public function getNb($element)
{
return $this->{$element};
}
/**
* Suppression des critères de toutes une famille
* @param string $famille
*/
public function resetFamille($famille)
{
$reference = $this->getByFamille($famille);
foreach($this->ciblage as $name => $valeur) {
if($name != 'null') {
if(array_key_exists($name, $reference)) {
unset($this->ciblage[$name]);
}
}
}
$this->setSession();
}
/**
* Suppression de toutes les valeurs en session
*/
public function clearCiblage()
{
Zend_Session::namespaceUnset('ciblage');
}
public function getValues($val = null)
{
if ( $val === null ) {
$val = $this->getCriteres();
}
return $val;
}
/**
*
* @param unknown_type $name
*/
protected function getMinMax($name)
{
$MinMaxM = new Application_Model_CiblageMinMax();
$minmax = $MinMaxM->fetchAll($MinMaxM->select()->where('cle = ?', $name))->toArray();
return $minmax;
}
/**
*
*/
public function getFields() {
return $this->fields;
}
public function get($name)
{
if ($this->fields[$name]['activated'] == true)
return $this->fields[$name];
return null;
}
public function getByFamille($famille)
{
$section = array();
foreach($this->fields as $name => $item) {
if($item['famille'] == $famille) {
$section[$name] = $item;
}
}
return ($section);
}
public function getLabel($name)
{
return $this->fields[$name]['label'];
}
public function getValueLabelNaf($values)
{
$values = array_map(function($value){ return '"'.$value.'"'; }, $values);
$out = array();
$nafM = new Application_Model_CiblageNaf();
$sql = $nafM->select()->from($nafM, array('lib', 'code'))->where('code IN ('.join(',',$values).')');
$result = $nafM->fetchAll($sql)->toArray();
foreach ( $result as $elem ) {
$out[] = $elem['lib'].' ('.$elem['code'].')';
}
return $out;
}
public function getValueLabelGeographique($values)
{
sort($values);
$out = array();
foreach ( $values as $item ) {
switch( substr($item,0,1) ) {
case 'C':
$communeM = new Application_Model_CiblageCodePostaux();
$sql = $communeM->select()->from($communeM, array('Commune', 'Codepos'))
->where('INSEE = ?', substr($item, 1));
$result = $communeM->fetchAll($sql)->toArray();
Zend_Registry::get('firebug')->info($result);
$out[] = $result[0]['Commune'].' ('.$result[0]['Codepos'].')';
break;
case 'D':
$departementsM = new Application_Model_CiblageDepartements();
$sql = $departementsM->select()->from($departementsM, array('libdep', 'numdep'))
->where('numdep = ?', substr($item, 1));
$result = $departementsM->fetchAll($sql)->toArray();
$out[] = $result[0]['libdep'].' ('.$result[0]['numdep'].')';
break;
case 'R':
$regionsM = new Application_Model_CiblageRegions();
$sql = $regionsM->select()->from($regionsM, array('NCCENR'))->where('REGION = ?', substr($item,1));
$result = $regionsM->fetchAll($sql)->toArray();
$out[] = $result[0]['NCCENR'];
break;
}
}
return $out;
}
public function getValueLabelCodespostaux($values)
{
foreach ( $values as $item ) {
$communeM = new Application_Model_CiblageCodePostaux();
$sql = $communeM->select()->from($communeM, array('Commune'))->where('Codepos = ?', $item);
$result = $communeM->fetchAll($sql)->toArray();
$strCommunes = '';
foreach ( $result as $c ) {
if (!empty($strCommunes)) $strCommunes.= ', ';
$strCommunes.= $c['Commune'];
}
$out[] = $item.' ('.$strCommunes.')';
}
return $out;
}
public function getValueLabelCodesdepts($values)
{
foreach ( $values as $item ) {
$departementsM = new Application_Model_CiblageDepartements();
$sql = $departementsM->select()->from($departementsM, array('libdep'))->where('numdep = ?', $item);
$result = $departementsM->fetchAll($sql)->toArray();
$out[] = $item.' ('.$result[0]['libdep'].')';
}
return $out;
}
public function getValueLabelCodesinsee($values)
{
foreach ( $values as $item ) {
$communeM = new Application_Model_CiblageCodePostaux();
$sql = $communeM->select()->from($communeM, array('Commune'))->where('INSEE = ?', $item);
$result = $communeM->fetchAll($sql)->toArray();
$out[] = $item.' ('.$result[0]['Commune'].')';
}
return $out;
}
public function getValueLabelJuridique($values)
{
$values = array_map(function($value){ return '"'.$value.'"'; }, $values);
$out = array();
$fjM = new Application_Model_CiblageFormeJuridique();
$sql = $fjM->select()->from($fjM, array('fjLibelle', 'fjCode'))->where('fjCode IN ('.join(',',$values).')');
$result = $fjM->fetchAll($sql)->toArray();
foreach ( $result as $elem ) {
$out[] = $elem['fjLibelle'].' ('.$elem['fjCode'].')';
}
return $out;
}
public function getValueLabel($name, $values)
{
if (count($values)>0 && array_key_exists($name, $this->fields)) {
$fieldsType = array_keys($this->fields[$name]['fields']);
$firstType = $fieldsType[0];
$fieldsValues = $this->fields[$name]['fields'][$firstType]['value'];
switch($firstType) {
case 'select':
case 'selectMultiple':
if (is_array($values)) {
$out = array();
foreach ( $values as $item ){
if (array_key_exists($item, $fieldsValues)) {
$out[] = $fieldsValues[$item];
}
}
return $out;
} else {
if (array_key_exists($values, $fieldsValues)) {
return $fieldsValues[$values];
}
}
break;
case 'interval':
$unit = '';
if (array_key_exists('unit', $this->fields[$name])) {
$unit = $this->fields[$name]['unit'];
}
//Max is not set
if ($values[1]=='') {
$label = "de ".$values[0]." ".$unit;
if (!empty($unit) && $values[0]>1) $label.= "s";
$label.=" et plus";
//Min is not set
} elseif ($values[0]=='') {
$label = "jusqu'à ".$values[1]." ".$unit;
if (!empty($unit) && $values[1]>1) $label.= "s";
//Min Max are set
} else {
$label = 'de '.number_format($values[0], null, ',', ' ')." ".$unit;
if (!empty($unit) && $values[0]>1) $label.= "s";
$label.= ' à '.number_format($values[1], null, ',', ' ')." ".$unit;
if (!empty($unit) && $values[1]>1) $label.= "s";
}
return $label;
break;
case 'intervalDate':
// du XX/XX/XXXX au XX/XX/XXXX
$date1 = substr($values[0],6,2).'/'.substr($values[0],4,2).'/'.substr($values[0],0,4);
$date2 = substr($values[1],6,2).'/'.substr($values[1],4,2).'/'.substr($values[1],0,4);
return 'du '.$date1.' au '.$date2;
break;
case 'tree':
$action = ucfirst($this->fields[$name]['fields'][$firstType]['action']);
return $this->{'getValueLabel'.$action}($values);
//Recherche des valeurs
break;
case 'list':
$action = ucfirst($name);
return $this->{'getValueLabel'.$action}($values);
break;
}
}
return '';
}
public function getInfoCritere()
{
}
}