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() { } }