![](https://lstrong.eu/wp-content/uploads/2019/08/sfdc-326x226.png)
La petite histoire du CRM
Un peu de culture générale ne fait jamais de mal !! Cet article de Salesforce (daté du 27 février 2018) est plutôt bien : La petite histoire du CRM.
Un peu de culture générale ne fait jamais de mal !! Cet article de Salesforce (daté du 27 février 2018) est plutôt bien : La petite histoire du CRM.
Salesforce France a organisé une matinée “Comment Salesforce utilise Salesforce” le 17 mai 2018. Parmi les outils présentés : “Quip”, outil de travail collaboratif permettant les échanges entre membres d’une […]
Voici un questionnaire selon moi sympa pour évaluer la maturité numérique de votre entreprise face à vos clients (relation commerciale, service client ou marketing). Le questionnaire est établi par Salesforce, […]
Salesforce publie un blog pour présenter les dernières nouveautés à mettre en avant. Véritable Newsletter sur Salesforce, n’hésitez pas à le consulter régulièrement. Accédez au blog en français en cliquant ici et en […]
L’AppExchange Salesforce est le “magasin” des outils informatiques pouvant s’interfacer avec l’application Salesforce. Il n’est pas nécessaire d’avoir un compte utilisateur sur la plateforme d’une organisation Salesforce pour pouvoir se […]
Au cours de mes années de travail sur l’administration du CRM Salesforce j’ai émis quelques idées sur la plateforme dédiée de l’éditeur. Rapport sur les tableaux de bords ayant des […]
© Léonard STRONG. Tous droits réservés.
Les profils utilisateurs accèptent plusieurs types de licences, dont :
– Les licences “Salesforce” pour les utilisateurs “internes” du CRM comme les équipes commerciales
– Les licences “Salesforce Platform” pour les utilisateurs “partenaires” du CRM comme les équipes “métier” ou des partenaires
– Les licences “Customer Portal” pour les utilisateurs liés à des contacts
Pour gérer les droits des utilisateurs liés à des contacts, la procédure est la suivante :
– Créer l’utilisateur à partir du contact, pour chaque contact concerné
– Créer un profil “client” auquel ces utilisateurs “clients” seront associés, en utilisant le type de licence “Customer Portal”
– Créer un profil platform” auquel les utilisateurs “métier” ou partenaires seront associés, en utilisant le type de licence “Salesforce Platform”
Une fois créés tous les profils utilisateurs attendus :
– Entrer dans la zone de paramétrage de la communauté
– Ouvrir l’écran d’Administration, puis “Membres”
– Sélectionner les profils en filtrant sur le type de licence (client, interne, partenaire ou tous)
Les sites se paramètrent dans la zone de configuration (configuration -> Sites et domaines -> Sites).
Un site peut être une communauté, les communautés se paramètrent aussi dans la zone de configuration (configuration -> Communautés -> Toutes les communautés
En création : définir l’étiquette et le nom
En création et modification : définir le contact et les différentes pages et les paramètres de contrôle.
Les composants d’une communauté s’ajoutent dans le générateur de l’espace de travail.
TITRE | PRIX | CATEGORIES | FIRST RELEASE | LIGHTNING READY | MOBILITY | PREREQUISITE |
---|---|---|---|---|---|---|
Social Hiring and Applicant tracking system | A partir de 69.99 USD / user / mois | Human Resources | 11 July 2014 | oui | non | |
TheHRMS Human Resource Management system | Nous contacter | Human Resources | 19 February 2014 | non | non | |
Jobscience | 160 USD / user / mois | Human Resources | 14 September 2007 | non | oui |
TITRE | PRIX | CATEGORIES | FIRST RELEASE | LIGHTNING READY | MOBILITY | PREREQUISITE |
---|---|---|---|---|---|---|
Gratuit | Campaign Management | 22 January 2014 | oui | non | ||
LinkedIn Sales Navigator for Salesforce | Gratuit | Productivity | 13 January 1900 | oui | non | |
Viadeo for Salesforce | Gratuit | Sales Intelligence | 12 October 2011 | non | non |
TITRE | PRIX | CATEGORIES | FIRST RELEASE | LIGHTNING READY | MOBILITY | PREREQUISITE |
---|---|---|---|---|---|---|
Salesforce CPQ | A partir de 75 EUR / user / mois | Quotes & Orders | 21 April 2010 | oui | oui | |
Free CPQ Solution | Gratuit | Quotes & Orders | 30 November 2015 | non | non |
TITRE | PRIX | CATEGORIES | FIRST RELEASE | LIGHTNING READY | MOBILITY | PREREQUISITE |
---|---|---|---|---|---|---|
Microsoft Dynamics NAV | A partir de 250 USD / souscription / mois | Integration | 14 mars 2007 | oui | non | |
Sage Business Cloud Financials | A partir de 549 USD / Companie / mois | Accounting | 12 août 2015 | oui | non | |
Invoices for Salesforce | A partir de 59 USD / user / mois | Accounting | 31 janvier 2012 | oui | oui | "Efficient invoicing/billing and receivables right within Salesforce Your invoices are already in Salesforce, however scattered across customers and sales records. So invoicing should simply involve automatically piecing these parts together, without re-keying a thing. This is what Invoices for Salesforce does. Simple !" |
TITRE | PRIX | CATEGORIES | FIRST RELEASE | LIGHTNING READY | MOBILITY | PREREQUISITE |
---|---|---|---|---|---|---|
DocuSign for Salesforce | A partir de 12 USD / user / mois | Contract Management | 7 March 2010 | oui | oui | - Send, eSign & track agreements & approvals anytime, anywhere, & from any device - Grow your business efficiently by digitizing legal documents, sales agreements, HR forms, & more. |
Adobe Sign | Gratuit | Contract Management | 6 October 2006 | oui | oui | No account or license required for e-signers -- accounts / licenses only required for senders. |
Simple Signature | Gratuit | Contract Management | 26 May 2016 | oui | oui | -- |
TITRE | PRIX | CATEGORIES | FIRST RELEASE | LIGHTNING READY | MOBILITY | PREREQUISITE |
---|---|---|---|---|---|---|
SPRINTER Agile Scrum Project Management | A partir de 100 USD / Companie / mois | Project Management | 20 August 2013 | non | non | This App uses Salesforce Workflow and API that are standard features of Enterprise, Unlimited, and Developer Editions. Chatter allows users to follow and collaborate on SPRINTER items, but is not required for the App. |
Agile Accelerator | Gratuit | Project Management | 31 March 2015 | oui | non | -- |
Taskfeed | 25 EUR / user / mois | Project Management | 23 July 2014 | oui | oui | Taskfeed required Chatter to be enabled. |
Salesforce & JIRA Server Connector | A partir de 10 USD / 10 licences / an | IT Management | 2 May 2008 | non | non | -- |
TITRE | PRIX | CATEGORIES | FIRST RELEASE | LIGHTNING READY | MOBILITY | PREREQUISITE |
---|---|---|---|---|---|---|
MailChimp for Salesforce | Gratuit | Mass Emails | 10 July 2013 | oui | non | If you have enabled the built-in integration with salesforce.com within MailChimp you may risk adversely high salesforce.com API call volumes when used in conjunction with MailChimp for Salesforce. |
Inxmail Professional email marketing for Salesforce | Nous contacter | Mass Emails | 3 January 2012 | oui | non | You need the following components to use Inxmail Professional for Salesforce CRM: Inxmail Professional ASP service/server software (licence), version 4.4.0.912 or higher; Inxmail Professional client software (optional for extended range of functions). |
TITRE | PRIX | CATEGORIES | FIRST RELEASE | LIGHTNING READY | MOBILITY | PREREQUISITE |
---|---|---|---|---|---|---|
Alfresco Content Connector | Nous contacter | Document Management | 23 February 2017 | oui | non | In addition to this managed package, a working Alfresco environment is required, with the Content Connector for Salesforce components (amps) installed. |
Dropbox for Salesforce | Gratuit | Collaboration | 15 October 2014 | oui | non | -- |
TITRE | PRIX | CATEGORIES | FIRST RELEASE | LIGHTNING READY | MOBILITY | PREREQUISITE |
---|---|---|---|---|---|---|
Cap Adresse - Data Quality Application | Gratuit | Data Cleansing | 19 November 2014 | oui | non | |
Clean Suite for CRM: All-in-One Data Cleansing App | 19.99 USD / Companie (une fois) | Data Cleansing | 3 March 2015 | oui | non | "Validate, update, enrich & dedupe your contact data *FREE TRIAL AVAILABLE* The #1 Dirty Data Fighter – Melissa’s Clean Suite verifies, cleans, updates, and enriches your data. With real-time processing + batch processing available, every name, address, email and phone – will be accurate and reliable." |
AddressTools Premium: Global Address Validation and Standardization Suite | A partir de 900 USD / Companie / an | Data Cleansing | 20 April 2010 | oui | non | For configuration options please visit the CountryComplete Administration tab after the package has been installed. |
AddressTools Free: Address Validation and Standardization Suite | Gratuit | Data Cleansing | 15 July 2009 | non | non | For configuration options please visit the CountryComplete Administration tab after the package has been installed. |
Opti-Time Cloud Tour | A partir de 15 EUR / user / mois | Field Service | 21 November 2014 | oui | oui |
Salesforce permet de faire plusieurs actions Salesforce directement depuis la messagerie de l’utilisateur sans être connecté au niveau applicatif : créer un enregistrement Salesforce, consigner un e-mail, créer une tâche …
L’extension Chrome pour Salesforce est à récupérer depuis ce lien : https://chrome.google.com/webstore/detail/salesforce/jjghhkepijgakdammjldcbnjehfkfmha?hl=fr. Cette URL correspond à l’extension “Salesforce Connector for GSuite”. L’extension se retrouve aussi dans la zone de recherche des extensions de Chrome.
Une fois l’extension installée il faut configurer le lien entre le compte de messagerie et le compte utilisateur pour l’environnement Salesforce voulu. Pour mémoire l’URL d’accès à la production est différente de l’URL d’accès aux Sandboxes.
Il faut d’abord saisir et valider l’URL d’accès à l’instance Salesforce (étapes 1 et 2) puis s’identifier sur Salesforce (étape 3) pour associer le compte de messagerie et le compte utilisateur
|
|
|
L’utilisation du site implique l’acceptation pleine et entière des conditions générales d’utilisation ci-après décrites. Ces conditions d’utilisation sont susceptibles d’être modifiées ou complétées à tout moment, les utilisateurs du site sont donc invités à les consulter de manière régulière.
Ce site est normalement accessible à tout moment aux utilisateurs. Une interruption pour raison de maintenance technique peut être toutefois décidée par Léonard STRONG, qui s’efforcera alors de communiquer préalablement aux utilisateurs les dates et heures de l’intervention.
Le site est mis à jour régulièrement par Léonard STRONG. De la même façon, les mentions légales peuvent être modifiées à tout moment : elles s’imposent néanmoins à l’utilisateur qui est invité à s’y référer le plus souvent possible afin d’en prendre connaissance.
Le site utilise la technologie JavaScript.
Le site Internet ne pourra être tenu responsable de dommages matériels liés à l’utilisation du site. De plus, l’utilisateur du site s’engage à accéder au site en utilisant un matériel récent, ne contenant pas de virus et avec un navigateur de dernière génération mis-à-jour.
Léonard STRONG est propriétaire des droits de propriété intellectuelle sur ses créations accessibles sur le site, notamment les textes, images, graphismes, photographies, icônes, sons, logiciels. Les logos ou icônes des organisations ou entreprises citées sur ce site sont la propriété intellectuelle des organisations ou entreprises en question.
Toute reproduction, représentation, modification, publication, adaptation de tout ou partie des éléments du site, quel que soit le moyen ou le procédé utilisé, est interdite, sauf autorisation écrite préalable de : Léonard STRONG ou de leur propriétaire.
Toute exploitation non autorisée du site ou de l’un quelconque des éléments qu’il contient sera considérée comme constitutive d’une contrefaçon et poursuivie conformément aux dispositions des articles L.335-2 et suivants du Code de Propriété Intellectuelle.
Léonard STRONG ne pourra être tenu responsable des dommages directs et indirects causés au matériel de l’utilisateur, lors de l’accès au site Leonard STRONG, et résultant soit de l’utilisation d’un matériel ne répondant pas aux spécifications indiquées au point 4, soit de l’apparition d’un bug ou d’une incompatibilité.
Léonard STRONG ne pourra également être tenu responsable des dommages indirects (tels par exemple qu’une perte de marché ou perte d’une chance) consécutifs à l’utilisation de ce site.
Des espaces interactifs (possibilité de poser des questions dans l’espace contact) sont à la disposition des utilisateurs. Léonard STRONG se réserve le droit de supprimer, sans mise en demeure préalable, tout contenu déposé dans cet espace qui contreviendrait à la législation applicable en France, en particulier aux dispositions relatives à la protection des données. Le cas échéant, Léonard STRONG se réserve également la possibilité de mettre en cause la responsabilité civile et/ou pénale de l’utilisateur, notamment en cas de message à caractère raciste, injurieux, diffamant, ou pornographique, quel que soit le support utilisé (texte, photographie…).
Ce site utilise des cookies et des plugins pour obtenir des statistiques de visites sur les deux dernières semaines d’activités : sont récupérées des informations du poste informatique utilisé par le visiteur (adresse IP, système d’exploitation, navigateur web, pays d’origine).
Ce site dispose également d’un formulaire de contact et un Questionnaire à Choix Multiples sur Salesforce pour lesquels l’authentification est obligatoire avec l’identité et l’adresse e-mail de la personne utilisant lesdits éléments. Le reporting sur le QCM fourni également une note globale pour chaque visiteur le complétant.
La gestion des informations récupérées pour les statistiques de visites sera revue avec le recul, dans le court terme toutes les données sont conservées.
Les données récupérées par les formulaires ne sont accessibles que par Léonard STRONG, le propriétaire sur site. Vous avez la possibilité d’en demander la suppression.
Selon les termes de la RGPD entrant en vigueur le 25 mai 2018 toute personne renseignant le questionnaire est en droit de demander l’accès et la suppression des données le concernant.
Le site de Léonard STRONG contient un certain nombre de liens hypertextes vers d’autres sites, mis en place avec l’autorisation de Léonard STRONG. Cependant, Léonard STRONG n’a pas la possibilité de vérifier le contenu des sites ainsi visités, et n’assumera en conséquence aucune responsabilité de ce fait.
La navigation sur le site Leonard STRONG est susceptible de provoquer l’installation de cookie(s) sur l’ordinateur de l’utilisateur. Un cookie est un fichier de petite taille, qui ne permet pas l’identification de l’utilisateur, mais qui enregistre des informations relatives à la navigation d’un ordinateur sur un site. Les données ainsi obtenues visent à faciliter la navigation ultérieure sur le site, et ont également vocation à permettre diverses mesures de fréquentation. La liste des cookies est disponible depuis le lien dédié.
Le refus d’installation d’un cookie peut entraîner l’impossibilité d’accéder à certains services. L’utilisateur peut toutefois configurer son ordinateur de la manière suivante, pour refuser l’installation des cookies :
Le site n’est pas déclaré à la CNIL car il n’exploite pas les données personnelles comme indiqué sur cette page.
Les bases de données sont protégées par les dispositions de la loi du 1er juillet 1998 transposant la directive 96/9 du 11 mars 1996 relative à la protection juridique des bases de données.
Tout litige en relation avec l’utilisation du site de Léonard STRONG est soumis au droit français. Il est fait attribution exclusive de juridiction aux tribunaux compétents de Paris.
Loi n° 78-17 du 6 janvier 1978, notamment modifiée par la loi n° 2004-801 du 6 août 2004 relative à l’informatique, aux fichiers et aux libertés.
Loi n° 2004-575 du 21 juin 2004 pour la confiance dans l’économie numérique.
Règlement (UE) 2016/679 du 27 avril 2016 relatif à la protection des personnes physiques à l’égard du traitement des données à caractère personnel et à la libre circulation de ces données. Pour accéder au texte européen, cliquez ici »».
Utilisateur : Internaute se connectant, utilisant le site susnommé.
Informations personnelles : « les informations qui permettent, sous quelque forme que ce soit, directement ou non, l’identification des personnes physiques auxquelles elles s’appliquent » (article 4 de la loi n° 78-17 du 6 janvier 1978).
Types d’objets | Description |
---|---|
Objets standards | Objets inclus avec Salesforce |
Objets personnalisés | Objets créés par les administrateurs pour stocker des informations spécifiques à la société |
Objets externes | Objets similaires aux Objets personnalisés, excepté qu’ils sont mappés avec des données situées hors de l’organisation Salesforce |
Error: Query produced zero results: SELECT * FROM lstro1204472_2ctbf6.upu_vEmissionThemes WHERE Emission = 'Europa';
Forme | Sous-Forme | Description |
---|---|---|
collection générale | collection géographique | La Collection géographique ou traditionnelle consiste à collectionner les timbres ou autres marques postales par pays. On peut se spécialiser dans certains pays. |
collection spécialisée | collection historique | Rassemblement des timbres ou objets postaux se rapportant à une période spéciale de l’histoire postale d’un pays. |
collection spécialisée | collection monographique | Collection des timbres à usage courant pour étudier les présentations inhabituelles, particularités liées à la fabrication, variétés etc. |
collection spécialisée | collection thématique | Rassemblement des timbres qui ont un rapport avec un thème particulier, puis à les organiser pour une présentation publique ou une conservation dans un but encyclopédique |
Classe | Sous-Classe | Description |
---|---|---|
Chronologique | Timbres classiques | Timbres anciens émis avant 1870 |
Chronologique | Timbres semi-modernes | Timbres émis entre 1870 et 1914 |
Chronologique | Timbres modernes | Timbres émis à partir de 1940 |
Type d’émission | Emission courante | Timbres-poste imprimés en très grande quantité et qui correspondent à un usage précis : affranchir la lettre intérieure et la carte postale ou bien à servir de valeur complémentaire |
Type d’émission | Emission spéciale | Regroupement des timbres thématiques et des timbres commémoratifs . Les premiers sont réguliers , les seconds , non |
Type d’émission | Emission commune ou conjointe | Emission de timbres-poste effectuée la même année par au moins deux pays. La plupart sont ponctuelles entre une poignée d’administrations postales, certaines sont régulières entre des pays membres d’une même organisation comme l’émission Europa depuis 1956. |
Nature d’émission | Timbres thématiques | Timbres qui illustrent un thème particulier : Faune , Flore , Bijoux etc… |
Nature d’émission | Timbres commémoratifs | Timbre-poste dont la figurine commémore ou illustre un fait, un personnage ou un évènement de manière ponctuelle |
Nature d’émission | Timbres fiscaux | Marque ou figurine destinée à prouver qu’un administré a bien payé à une collectivité publique certaines catégories de taxes ou d’impôts |
Nature d’émission | Timbres personnalisés | Timbres-poste illustré ou accompagné d’une vignette illustrée par un dessin ou une photographie choisis par un particulier, une association ou un entreprise non gouvernementale. |
Pour avoir plus de détails sur les types de champs personnalisés consultez la publication Salesforce, cliquez ici »»
Type (libellé français) | Type (libellé anglais) | Type (libellé français) | Type (libellé anglais) | |
---|---|---|---|---|
Numéro automatique | Auto Number | Case à cocher | Checkbox | |
Devise | Currency | Date | Date | |
Date/Heure | Date/Time | Messagerie | ||
Relation de référence externe | External Lookup Relationship | Formule | Formula | |
Géolocalisation | Geolocation | Relation hiérarchique | Hierarchical Relationship | |
Relation de référence indirecte | Indirect Lookup Relationship | Relation de recherche | Lookup Relationship | |
Relation principal-détails | Master-Detail Relationship | Numérique | Number | |
Pourcentage | Percent | Téléphone | Phone | |
Liste de sélection | Picklist | Liste de sélection (sélection multiple) | Picklist (Multi-select) | |
Récapitulatif de cumul | Roll-Up Summary | Texte | Text | |
Texte (crypté) | Text (Encrypted) | Zone de texte | Text Area | |
Zone de texte (longue) | Text Area (Long) | Zone de texte (enrichi) | Text Area (Rich) | |
Heure | Time | URL | URL |
Le message d’erreur « Ce nom de présentation de page existe déjà ou a déjà été utilisé. Vos modifications n’ont pas été enregistrées. » implique la présence de doublons sur des actions. C’est le problème à résoudre pour clôturer le sujet.
Sous Lightning la procédure de résolution est décrite sur cette publication Salesforce
|
|
![]() | ![]() |
L’objectif de la direction de HRCP est de connaître la durée de vie moyenne des affaires arrivant à l’un des deux statuts finaux (affaires signées ou perdues) dans le cadre de l’activité des équipes commerciales.
![]() | ![]() |
Comme je le montre plus haut sur cette page de réalisation, j’ai travaillé sur le projet de migration de Salesforce Classic vers Lighting Experience.
Suite à cette migration nous avons laissé la possibilité aux utilisateurs de basculer entre les deux versions de l’outil pendant un temps.
L’objectif de ce rapport est de voir la liste des utilisateurs utilisant cette bascule avec le motif de la bascule sur les mois en cours et précédents
Dans le cadre du suivi de l’activité des équipes commerciales ce rapport sert à suivre le taux de transformation des affaires avec les deux statuts finaux : affaires signées et affaires perdues.
Le champ “date de signature” avait été créé par un collègue et prend la date de premier passage au statut “affaire signée”.
J’ai créé un champ “date de perte” qui prend la date de premier passage au statut “affaire perdue” et un champ “date de clôture” qui prend la date de signature ou la date de perte dès que l’affaire est en statut final. Ces champs ne sont pas utilisés sur les présentations de pages des affaires. Une règle de workflow alimente la date de perte et la date de clôture est un champ formule.
Ce travail a nécessité une reprise d’historique de l’ensemble des affaires perdues.
![]() | ![]() |
Dans le cadre de la gestion des produits ce process builder permet de rattacher automatiquement les nouveaux produits aux catalogues de prix.
Les utilisateurs habilités n’ont qu’à créer le produit et toutes les informations requises sont copiées sur l’entrée correspondante des catalogues de prix.
Ce processus s’exécute à la création de chaque nouveau produit, une entrée de catalogue de prix est créée pour le catalogue standard et celui utilisé par HRCP en reprenant les informations suivantes :
A mon arrivée sur le projet Randstad HRCP la première story que j’ai traité était de créer la fonctionnalité d’historisation d’affaires pour suivre le pipe en cours des équipes commerciales. Dans ce cadre j’ai créé les éléments suivants :
![]() | ![]() |
Exemple de page d’application pour l’un des profils utilisateurs
Exemple de page d’enregistrement des comptes
Requête non optimisée | Requête optimisée |
---|---|
SELECT MM.ID AS ID_METER, MIM.ID AS ID_INDEX, MM.ID_ROB_REG_RES_SITE, MM.METER_NAME, MM.GUID_METER AS ADDRESS, MIM.INDEX_NAME, MIV.CURRENT_INDEX_DATE, DECODE ( RLLOV.WORDING, 'lov_mode_saisie_comptage_index', MIV.CURRENT_INDEX_VALUE, 'lov_mode_saisie_comptage_consommation', MIV.CONSUMPTION, MIV.CURRENT_INDEX_VALUE ) AS LAST_INDEX_CURRENT_VALUE, ( SELECT ROB_MEA.WORDING FROM RUM_OBJECT_BASE ROB_MEA WHERE MM.ID_ROB_TYPE_METER = ROB_MEA.ID ) AS TYPE_METER, ROW_NUMBER() OVER (PARTITION BY MIV.ID_INDEX ORDER BY MIV.CURRENT_INDEX_DATE DESC) RN FROM MEA_METER MM, MEA_INDEX_METER MIM, MEA_INDEX_VALUES MIV, MEA_TYPE_COMPTAGE MTC, RUM_LINE_LIST_OF_VALUE RLLOV WHERE RLLOV.CODE_LIST = 'MODE SAISIE TYPE COMPTAGE' AND MM.ID = MIM.ID_METER AND MIM.ID = MIV.ID_INDEX AND MIM.ID_TYPE_COMPTAGE = MTC.ID AND MTC.ID_INPUT_MODE = RLLOV.ID | SELECT MM.ID AS ID_METER, MIM.ID AS ID_INDEX, MM.ID_ROB_REG_RES_SITE, MM.METER_NAME, MM.GUID_METER AS ADDRESS, MIM.INDEX_NAME, MIV.CURRENT_INDEX_DATE, DECODE ( RLLOV.WORDING, 'lov_mode_saisie_comptage_index', MIV.CURRENT_INDEX_VALUE, 'lov_mode_saisie_comptage_consommation', MIV.CONSUMPTION, MIV.CURRENT_INDEX_VALUE ) AS LAST_INDEX_CURRENT_VALUE, ( SELECT ROB_MEA.WORDING FROM RUM_OBJECT_BASE ROB_MEA WHERE MM.ID_ROB_TYPE_METER = ROB_MEA.ID AND ROB_MEA.ID_TYPE_OBJECT_BASE = 67 ) AS TYPE_METER, ROW_NUMBER() OVER (PARTITION BY MIV.ID_INDEX ORDER BY MIV.CURRENT_INDEX_DATE DESC) RN FROM MEA_METER MM, MEA_INDEX_METER MIM, MEA_INDEX_VALUES MIV, MEA_TYPE_COMPTAGE MTC, RUM_LINE_LIST_OF_VALUE RLLOV WHERE RLLOV.CODE_LIST = 'MODE SAISIE TYPE COMPTAGE' AND MM.ID = MIM.ID_METER AND MIM.ID = MIV.ID_INDEX AND MIM.ID_TYPE_COMPTAGE = MTC.ID AND MTC.ID_INPUT_MODE = RLLOV.ID |
Si vous avez un compte sur ce site ou avez laissé un commentaire, vous êtes en droit de demander un fichier extraction de vos données personnelles que nous avons récupérées. Cela comprend les données que vous nous avez fournis.
Vous pouvez également demander la suppression de tout ou partie des données personnelles vous concernant.
Cela exclue toute donnée que nous sommes obligé de conserver à des fins administrative, légale ou de sécurité.
Requête de données personnelles
Merci d’utiliser ce formulaire de fourniture / suppression de données personnelles
L’émission “EUROPA” est une émission conjointe annuelle de timbres-poste des Administrations Postales Européennes.
Cette émission était gérée par la Communauté Européenne du Charbon et de l’Acier (CECA) de 1956 à 1959 puis la Conférence Européenne des administrations des Postes et Télécommunications (CEPT) de 1960 à 1992. Elle est gérée par l’Association des Opérateurs Postaux Publics Européens (PostEurop) depuis 1993. Depuis sa création en 1956 les différentes éditions de l’émission “EUROPA” ont un thème et/ou une illustration communs.
De 1956 à 1959 les Etats membres de la CECA étaient l’Italie, la France, le Benelux et l’Allemagne.
Qu’est ce que la Philatélie | cliquez ici »» |
Les faux de Londres | cliquez ici »» |
L’Union Postale Universelle | cliquez ici »» |
L’histoire philatélique française | cliquez ici »» |
L’histoire philatélique britannique | cliquez ici »» |
L’histoire philatélique de l’Empire britannique | cliquez ici »» |
Error: Query produced zero results: SELECT * FROM lstro1204472_2ctbf6.upu_vEmissionThemes WHERE Emission = 'Sepac';
Postes nationales | ||
---|---|---|
La Poste française | FRANCE | www.laposte.fr |
La Poste australienne | AUSTRALIE | auspost.com.au |
La Poste suisse | SUISSE | www.post.ch |
La Poste britannique | ROYAUME-UNI | www.royalmail.com |
La Poste israelienne (en anglais) | ISRAEL | www.israelpost.co.il |
Commerces | ||
Yvert et Tellier | FRANCE | www.yvert.com |
Lindner | ALLEMAGNE | www.lindner-original.fr |
Philantologie | FRANCE | www.philantologie.fr |
Marigny Philatélie | FRANCE | www.marigny-philatelie.com/fr |
Rhône Philatélie | FRANCE | www.rhonephilatelie.fr |
Associations et Chambres de représentants | ||
Union Postale Universelle | Opérateurs postaux (monde) | www.upu.int |
Fédération Internationale de Philatélie | Fédérations Philatéliques | www.f-i-p.ch |
PostEurop | Opérateurs postaux (Europe) | www.posteurop.org |
CNEP (chambre syndicale) | FRANCE | www.cnep.fr |
FFAP (fédération des associations philatéliques) | FRANCE | www.ffap.net |
American Philatelic Society | USA | stamps.org |
Vocabulaire | VulgumTechus | Lexique | vulgumtechus.com/Lexique_de_la_philat%C3%A9lie#Liens_externes | FFAP (fédération des associations philatéliques) | Lexique | www.ffap.net/Philatelie/lexiquephil.php |
Les utilitaires sont des raccourcis facilitant l’accès aux données pour les utiliteurs. Ils peuvent permettre de ne pas avoir à lancer de recherche sur des objets (un compte, une opportunité, …), des activités (tâches ou événements), des éléments chatter (favoris ou abonnements) ou d’autres composants de Salesforce.
Les administrateurs peuvent personnaliser l’interface utilisateur autant pour les applications personnalisées (comme dans Classic) que pour les applications standards (contrairement à Classic) grâce aux “thèmes et personnalisation de la marque”.
Dans Salesfoce Classic les administrateurs pouvaient intégrer le logo de l’entreprise à la place du logo de Salesforce dans les applications personnalisées. Cette situation est reprise dans Lightning Experience et complétée grâce aux “thèmes et personnalisation de la marque”.
Ce paramétrage, nouveauté de Lightning Experience, permet aussi de définir une image ou une couleur unie pour le fond d’écran.
Salesforce propose des thèmes standards et les utilisent par défaut.
Making education easier for students whether in a classroom, home or an internship in a foreign university by removing the cumbersone methods though new learning technologies will be the main theme of E-education Without Borders Conference which will open in the capital today.
The three-day conference aims to build new strategies for the efficient delivery of e-education, focus attention on academic standards relating to e-education issues, and facilitate the establishement of a global student forum to encourage the continuation of this initiative. The conference is organised and will be conducted by students for students.
The idea was initiated by students of the Abu Dhabi Men’s College and 90% of the work for organising the conference has been done by the students, acording to Khalid Al Falasi, a student in the college and one of the organisers.
He said yesterday the conference would give students an opportunity to achieve direct communication. “About 300 students from 47 countries will take part in the conference to discuss their ideas and present their papers on online programs and facilities worldwide” he said.
“The most significant point is that students will speak during the conference to demonstrate their views about the future of e-learning” he said.
Khamis Al Hosani, another organiser, explained that students would highlight future challenges and needs to expand online learnig programmes as well as different advantages and risks of adopting such learning methods.
He pointed out that students from more than 100 colleges and universities worldwide would present papers and hold professionnal-level discussions around the anticipated impact of e-learning methodology and technology. He also announced that the confernce would present the Cancelor’s, Conference and Industrial awards to the best papers offered by students.
Dr Tayeb Kamali, Director of the college was seen to give students the chance to express themselves and organise the event according to their own views.
by a staff reporter, Khaleej Times, April 21st 2001
Au début des années 1950 l’Emirat d’Abu Dhabi n’était qu’un désert peu visité. La population se réduisait à quelques tribus Bédouines. En 1958 un consortium Franco-Britanique a découvert un gisement offshore de pétrôle. Les exportations commencèrent quatre ans plus tard. Dans les années 1970, Abu Dhabi devint un producteur majeur de pétrôle. Le niveau de vie de la population a considérablement augmenté et le pays a investi pour transformer le désert en une terre verdoyante.
Dans les années 1960 avec le développement de l’activité pétrolière les différents émirats de la région se rapprochent. Les britanniques quittent la région en 1968.
Neuf émirats tentent de former une union, n’y arrivant pas : Bahreïn (en août 1971) et le Qatar (en septembre 1971) prennent leur indépendance.
Six des septs émirats actuels (Abu Dhabi, Ajman, Dubaï, Fujaira, Ras Al Khaimah, Sharjah, Umm Al Qaiwan) accèdent à l’indépendance et se fédèrent le 2 décembre 1971. L’émirat de Ras Al Khaimah rejoint l’union en 1972.
L’émirat de Dubaï s’est lui tourné depuis les années 2000 vers de nouvelles ressources telles que les ports francs, les nouvelles technologies mais surtout le tourisme de luxe. La ville de Dubaï est d’ailleurs devenue la capitale économique de la fédération.
Les E.A.U. sont situés au Nord de la péninsule Arabique. Limitrophes du Royaume d’Arabie Saoudite (au Sud avec 530 kilomètres de frontière terrestre) et du Sultanat d’Oman (au Nord et à l’Est avec 450 kilomètres de frontière). Les Emirats Arabes Unis possèdent des côtes sur le Golfe Persique (sur 600 km) et sur le Golfe d’Oman (sur 100 km).
Les côtes du Golfe Persique sont longées d’îles et de recifs. La surface totale du pays est de 83 600 km2 dont 86% (soit 67 000 km2) pour le seul Emirat d’Abu Dhabi.
A début des années 2000 la ville est un contraste entre le modernisme du centre-ville (urbanisé et verdoyant) et le “dénument” de la périphérie (bidons-villes dans le désert). Comme dans tout le pays avec seulement 30% de nationaux la ville accueille beaucoup de travailleurs étrangers (Américains, Européens, Indiens et / ou Pakistanais). Deux orthographes sont admises en français :
Informations wikipedia sur les E.A.U. : fr.wikipedia.org/wiki/emirats_arabes_unis
Informations wikipedia sur la ville d’Abou Dabi : fr.wikipedia.org/wiki/Abou_Dabi_(ville)
<apex:page controller=”Engagement_Ctlr” showHeader=”false” sidebar=”true”>
<style>
.blockscthead .pbSubheader{
background-color: #2175D9 !important;
color: #FFB511;
}
.header{
background: #2175D9 !important;
}
.blocksct{
background: #FFFFFF !important;
}
.outputNote{
font-weight: bold !important;
text-align:left !important;
color: #2175D9 !important;
border: 2px solid #FFB511 !important;
padding: 2px;
}
.buttons{
background: #2175D9 !important;
color: white !important;
font-size: 12px !important;
height:25px !important;
vertical-align: middle !important;
align: center !important;
border: 2px solid #FFB511 !important;
}
</style>
<apex:form id=”Engagement” styleClass=”blocksct”>
<apex:pageMessages />
<apex:pageBlock Title=”Bid Intake Requirements – Sales Checklist” mode=”detail”>
<!– Define the button apearing on the footer –>
<apex:pageBlockButtons location=”bottom”>
<apex:commandButton action=”{!save}” value=”Send the form” styleClass=”buttons” />
</apex:pageBlockButtons>
<!– Define the image apearing on the header –>
<apex:outputPanel layout=”block” styleClass=”header”>
<apex:pageBlockSection >
<apex:image id=”BidIntake” url=”{!$Resource.bid_intake_form_1920x350}” width=”1000″ />
</apex:pageBlockSection>
</apex:outputPanel>
<apex:outputPanel layout=”block” styleClass=”blockscthead”>
<apex:pageBlockSection Title=”Project”>
<apex:inputField required=”true” id=”BidSupport” label=”Bid Support: ” value=”{!eng.Bid_Support__c}” />
<apex:inputField required=”true” id=”ProjectType” label=”Project Type: ” value=”{!eng.Project_Type__c}” />
</apex:pageBlockSection>
</apex:outputPanel>
<apex:outputPanel layout=”block” styleClass=”blockscthead”>
<apex:pageBlockSection Title=”Your contact Information”>
<apex:inputField required=”true” id=”ContactName” label=”Your name: ” value=”{!eng.RUS_Team_Member__c}” />
<apex:inputField required=”true” id=”ContactEmail” label=”Your email: ” value=”{!eng.RUS_Team_Member_Email__c}” />
<apex:inputField required=”true” id=”Phone” label=”Phone: ” value=”{!eng.Contact_Number__c}” />
<apex:inputField required=”true” id=”OpCo” label=”OpCo/Concept: ” value=”{!eng.OpCoConcept__c}” />
<apex:inputField required=”true” id=”Scope” label=”Scope: ” value=”{!eng.Scope__c}” />
<apex:inputField required=”true” id=”Country” label=”Country: ” value=”{!eng.Country__c}” />
<apex:inputField required=”true” id=”City” label=”City: ” value=”{!eng.City__c}” />
<apex:inputField required=”true” id=”State” label=”State/Province: ” value=”{!eng.State__c}” />
</apex:pageBlockSection>
</apex:outputPanel>
<apex:outputPanel layout=”block” styleClass=”blockscthead”>
<apex:pageBlockSection Title=”Client Information – Please complete as much information as possible”>
<apex:inputField required=”true” id=”ClientName” label=”Client Company Name: ” value=”{!eng.Lead_Company_Name__c}” />
<apex:inputField required=”false” id=”UltimateClientName” label=”Client Company Lookup:<br>Use Lookup to search company<br> <i>Leave blank if company is not found” value=”{!eng.Ultimate_Client_Name__c}” />
<apex:inputField required=”true” id=”ClientWebsite” label=”Client Website: ” value=”{!eng.Client_Website__c}” />
<apex:inputField required=”true” id=”Industry” label=”Industry: ” value=”{!eng.Client_Industry_Sector__c}” />
<apex:inputField required=”true” id=”DueDate” label=”Due Date: ” value=”{!eng.Project_Due_Date__c}” />
<apex:inputField required=”true” id=”CurrentClient” label=”Existing client relationship with Randstad: ” value=”{!eng.Current_Client__c}” />
<apex:inputField required=”true” id=”Number_of_Locations” label=”In-Scope Locations: ” value=”{!eng.Number_of_Locations__c}” />
<apex:inputField required=”true” id=”LocationNotes” label=”In-Scope Location Notes: ” value=”{!eng.Main_Locations__c}” />
<apex:inputField required=”true” id=”BusinessType” label=”Type of business this opportunity represents: ” value=”{!eng.Type_of_Business__c}” />
<apex:inputField required=”true” id=”BidOpp” label=”Bid Opportunity (client spend): ” value=”{!eng.Client_s_Collective_Spend__c}” />
<apex:inputField required=”true” id=”Bidders” label=”Number of Competitors: ” value=”{!eng.Number_of_Bidders__c}” />
<apex:inputField required=”true” id=”DesiredDeliveryModel” label=”Desired Delivery Model: ” value=”{!eng.Desired_Delivery_Model__c}” />
<apex:inputField required=”true” id=”Solution” label=”Solution: ” value=”{!eng.Solution__c}” />
<apex:inputField required=”true” id=”PricingModel” label=”Pricing model being requested: ” value=”{!eng.Rate_card_Not_to_Exceed_Mark_up_Month__c}” />
<apex:inputField required=”true” id=”SkillSets” label=”Skill Sets Required: <br><i>(select all that apply)</i>” value=”{!eng.Skill_Sets_Required__c}” />
<apex:inputField required=”true” id=”CountriesInScope” label=”Countries for delivery: <br><i>(select all that apply)</i>” value=”{!eng.Countries_and_Locations__c}” />
</apex:pageBlockSection>
</apex:outputPanel>
<apex:outputPanel layout=”block” styleClass=”blockscthead”>
<apex:pageBlockSection Title=”Preliminary Opportunity Qualification”>
<apex:outputText value=”This section is only required when project type is RFP/RFQ” styleClass=”outputNote” />
<apex:outputText />
<apex:outputText>1. The client is accessible and has a partnership mentality:</apex:outputText>
<apex:inputField required=”true” label=”” value=”{!eng.X2_Client_Accessible_Partnership__c}” />
<apex:outputText>If True, please validate with the approximate date of our last interaction regarding this opportunity. If False, please enter N/A</apex:outputText>
<apex:inputField required=”false” label=”” value=”{!eng.X2_If_True_Approximate_Pre_Engage_Date__c}” />
<apex:outputText>2. The client has a compelling reason to buy/make a change:</apex:outputText>
<apex:inputField required=”True” label=”” value=”{!eng.X3_Client_Has_Compelling_Reason__c}” />
<apex:outputText>If True, concisely enter rationale. If False, please enter N/A.</apex:outputText>
<apex:inputField required=”false” label=”” value=”{!eng.X3_If_True_Rationale_to_Buy_Change__c}” />
<apex:outputText>3. This opportunity is aligned with Randstad s core competencies:</apex:outputText>
<apex:inputField required=”True” label=”” value=”{!eng.X4_Opportunity_Aligned_Core_Competencies__c}” />
<apex:outputText>4. The business terms are acceptable (pricing, credit, legal and risk):</apex:outputText>
<apex:inputField required=”true” label=”” value=”{!eng.X5_Business_Terms_Acceptable_CLR__c}” />
<apex:outputText>5. We have been provided adequate time to respond (E.g 2 weeks):</apex:outputText>
<apex:inputField required=”true” label=”” value=”{!eng.X6_Provided_Adequate_Time_to_Respond__c}” />
</apex:pageBlockSection>
</apex:outputPanel>
<apex:outputPanel layout=”block” styleClass=”blockscthead”>
<apex:pageBlockSection Title=”Notes/Comments”>
<apex:outputText >What additional information should we know about this project?</apex:outputText>
<apex:inputTextArea required=”false” id=”comments” label=”” value=”{!eng.Comments__c}” rows=”5″ cols=”100″ />
</apex:pageBlockSection>
</apex:outputPanel>
<!– To hide the outputPanel add the parameter {rendered=”false”} after {styleClass=”blockscthead”} –>
<apex:outputPanel layout=”block” styleClass=”blockscthead”>
<apex:pageBlockSection columns=”1″ Title=”Add files to upload” id=”theBlock”>
<apex:repeat value=”{!fileList}” var=”fl”>
<apex:pageBlockSectionItem >
<apex:outputLabel >Attachment</apex:outputLabel>
<apex:inputFile value=”{!fl.body}” lang=”EN” filename=”{!fl.Name}” id=”addFile” accept=”image/*.doc,.docx,.pdf,.xls,.xlsx,.txt, .csv” filesize=”800″ size=”50″ />
</apex:pageBlockSectionItem>
</apex:repeat>
</apex:pageBlockSection>
</apex:outputPanel><br/>
<apex:outputLabel>Please before you attach, click “Add File” to add the number of files you want to upload: </apex:outputLabel>
<apex:commandButton id=”AddAtt” value=”Add File” action=”{!AddAttachs}” styleClass=”buttons”/>
</apex:pageBlock>
</apex:form>
</apex:page>
<apex:page showHeader=”false” sidebar=”true”>
<style>
.fontyel{
color: #FFB511 !important;
}
.fontgreen{
//color: #006633 !important;
color: #009900 !important;
}
.header{
background: #2175D9 !important;
}
</style>
<apex:form id=”EngagementThankYou”>
<apex:pageBlock Title=”” mode=”detail”>
<!– Define the image apearing on the header –>
<apex:outputPanel layout=”block” styleClass=”header”>
<apex:pageBlockSection >
<apex:image id=”BidIntake” url=”{!$Resource.bid_intake_form_1920x350}” width=”1000″ />
</apex:pageBlockSection>
</apex:outputPanel>
<apex:pageBlockSection columns=”1″>
<apex:outputText value=”Thank You for submitting your request to the Customer Acceleration Team!” styleClass=”fontboldblue” />
<apex:outputText value=”You have successfully submitted your request and the information will be reviewed shortly. A member of our team will be in touch with you soon. ” />
<apex:outputText />
<apex:outputText />
<apex:outputText value=”What would you like to do next?” styleClass=”fontbold” />
<apex:outputText value=”1. If you have related documents please click on the Bids and Solutions link for your region below to submit related documents.” />
</apex:pageBlockSection>
<apex:pageBlockSection columns=”1″>
<apex:outputLink styleClass=”fontyel” value=”mailto:rpg-customerintelligence-dl@randstadusa.com”>Bids and Solutions NAM</apex:outputLink>
<apex:outputLink styleClass=”fontyel” value=”mailto:ask.gcs@randstad.com”>Bids and Solutions EMEA</apex:outputLink>
<apex:outputText />
<apex:outputText />
<apex:outputText value=”2. If you have another project to submit to the Customer Acceleration Team click below.” />
<apex:outputLink styleClass=”fontyel” value=”apex/engagement” >Bid Intake Form</apex:outputLink>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
public with sharing class Engagement_Ctlr
{
public engagement__c eng{ get; set; }
public List<Attachment> fileList{ get; set; }
public Attachment attach{ get; set; }
private final Engagement__c engagement;
public Engagement_Ctlr()
{
// Create a constructor to populate the custom object “Engagement__c” from the VisualForce Page
eng = new Engagement__c();
// Define the default values for the VisualForce Page
eng.Bid_Support__c = ‘Yes’;
eng.City__c = ”;
eng.Country__c = ”;
eng.RUS_Team_Member__c = ”;
eng.RUS_Team_Member_Email__c = ”;
// Define the default parameters for the attachments
attach = new Attachment();
fileList = new List<Attachment>();
fileList.add(attach);
}
public Engagement__c getEngagement()
{
system.debug(engagement);
return engagement;
}
public List<Attachment> getAttachments()
{
return null;
}
public PageReference AddAttachs()
{
fileList.add(new Attachment());
return null;
}
// Component used by the button “Send” to save the page
public PageReference save()
{
eng.name = eng.Lead_Company_Name__c;
INSERT eng;
if(eng != NULL) {
List<Attachment> attachments = new List<Attachment>();
for(Attachment att : fileList){
if(att.name != null && att.body != null){
// Call the function to upload Documents in the related list “Files”
save_to_file(att.name, att.body, eng.Id);
}
}
if(attachments != null){
upsert attachments;
}
}
return new PageReference(‘/apex/Engagement_ThankYou?’+attach.Id);
}
// Function called to upload the attachments in the related list “Files”
public void save_to_file(String fileName, Blob base64Data, String relation_id)
{
if (fileName != null){
ContentVersion cVersion = new ContentVersion();
cVersion.ContentLocation = ‘S’; //S-Document is in Salesforce. E-Document is outside of Salesforce. L-Document is on a Social Netork.
cVersion.PathOnClient = fileName; //File name with extention
cVersion.Origin = ‘H’;//C-Content Origin. H-Chatter Origin.
//cVersion.PublishStatus = ‘P’;
cVersion.FirstPublishLocationId = UserInfo.getUserId();
cVersion.OwnerId = UserInfo.getUserId(); //Owner of the file
cVersion.Title = fileName; //Name of the file
cVersion.SharingOption = ‘A’;
cVersion.VersionData = base64Data; //EncodingUtil.base64Decode(base64Data); //converting your binary string to Blo
Insert cVersion;
System.debug(‘ContentVersion: ‘+ cVersion.id);
Id conDocument = [SELECT ContentDocumentId
FROM ContentVersion
WHERE Id =:cVersion.Id].ContentDocumentId;
ContentDocumentLink cDocLink = new ContentDocumentLink();
cDocLink.ContentDocumentId = conDocument;//Add ContentDocumentId
// Which object do you want to relate –> add the ID of the record
cDocLink.LinkedEntityId = relation_id;
cDocLink.ShareType = ‘I’;
cDocLink.Visibility = ‘AllUsers’;
Insert cDocLink;
System.debug(‘cDocLink.id ‘+ cDocLink.id);
}
}
}
@isTest
public class Engagement_CtlrTest
{
@isTest
public static void testEngagement() {
// Bring the value of the connected user
User u = [select id, firstname, lastname, Bypass_Validation_Rules__c from user where id=:userinfo.getuserid()];
String userID = u.ID;
String userFullName = u.firstname + ‘ ‘ + u.lastname;
// Instantiate the “form” page
PageReference pgForm1 = page.Engagement;
system.debug(‘Engagement VFP: ‘+pgForm1);
Test.setCurrentPage(pgForm1);
// Instantiate the “thank you” page
PageReference pgForm2 = page.Engagement_ThankYou;
system.debug(‘Thank you VFP: ‘+pgForm2);
Test.setCurrentPage(pgForm2);
//*****************************************************
// Test of the object ” Engagement__c ”
Engagement__c testEng = new Engagement__c( name=’Test ENG’, CreatedById = String.valueOf(userID).left(15), LastModifiedById = String.valueOf(userID).left(15));
system.debug(‘testEng: ‘+testEng);
UPSERT testEng;
system.debug(‘UPSERT 1 – testEng.Id = ‘+String.valueOf(testEng.Id).left(15));
//*****************************************************
// 1st part: no data in Engagement
system.debug(‘1st part: no data in Engagement’);
ApexPages.currentPage().getParameters().put(‘id’, testEng.Id);
system.debug(‘ApexCurrentPage: ‘+ApexPages.currentPage());
system.debug(‘testEng.Id: ‘+ testEng.Id);
Engagement_Ctlr controller = new Engagement_Ctlr();
// 2nd part : detailed Engagement
system.debug(‘2nd part : detailed Engagement’);
// Section “Project”
testEng.Bid_Support__c = ‘Yes’;
testEng.Project_Type__c = ‘RFP/RFQ’;
// Section “Your contact Information”
testEng.RUS_Team_Member__c = ‘Lenny STRONG’;
testEng.RUS_Team_Member_Email__c = ‘leonard.strong@st-groupe.fr’;
testEng.Contact_Number__c = ‘(206) 201-0123456789’;
testEng.OpCoConcept__c = ‘Enterprise Group’;
testEng.City__c = ‘Seattle’;
testEng.State__c = ‘WA’;
// Section “Client Information”
testEng.Lead_Company_Name__c = ‘Test ENG’;
testEng.Client_Industry_Sector__c = ‘Consulting’;
testEng.Project_Due_Date__c = system.today();
system.debug(‘*** system.today() ***: ‘+system.today());
testEng.Number_of_Locations__c = ‘1 – 5’;
testEng.Main_Locations__c = ‘This is a location note’;
testEng.Current_Client__c = ‘Yes’;
testEng.Type_of_Business__c = ‘Renewal/Existing’;
testEng.Client_s_Collective_Spend__c = ‘1) < $1M’;
testEng.Number_of_Bidders__c = ‘5’;
testEng.Desired_Delivery_Model__c = ‘Consulting’;
testEng.Rate_card_Not_to_Exceed_Mark_up_Month__c = ‘Fixed Fee-IT Solutions’;
testEng.Skill_Sets_Required__c = ‘IT’;
// Section “Preliminary Opportunity Qualification”
testEng.X2_Client_Accessible_Partnership__c = ‘Unknown’;
testEng.X2_If_True_Approximate_Pre_Engage_Date__c = ‘N/A’;
testEng.X3_Client_Has_Compelling_Reason__c = ‘Unknown’;
testEng.X3_If_True_Rationale_to_Buy_Change__c = ‘N/A’;
testEng.X4_Opportunity_Aligned_Core_Competencies__c = ‘Unknown’;
testEng.X5_Business_Terms_Acceptable_CLR__c = ‘Unknown’;
testEng.X6_Provided_Adequate_Time_to_Respond__c = ‘Unknown’;
// Section “Add files to upload”
Attachment attach=new Attachment();
attach.Name=’Unit Test Attachment’;
Blob bodyBlob=Blob.valueOf(‘Unit Test Attachment Body’);
attach.body=bodyBlob;
attach.parentId = testEng.Id;
ID pid=Id.valueOf(attach.parentId);
UPSERT testEng;
system.debug(‘UPSERT 2 – testEng.Id = ‘+String.valueOf(testEng.Id).left(15));
controller = new Engagement_Ctlr();
//*****************************************************
Test.StartTest();
System.debug(‘userFullName: ‘ + userFullName);
PageReference pgForm3 = page.Engagement;
ApexPages.currentPage().getParameters().put(‘Id’,String.valueOf(attach.Id));
ApexPages.currentPage().getParameters().put(‘Pid’, String.valueOf(testEng.Id));
system.debug(ApexPages.currentPage());
Engagement_Ctlr ctrlAttach = new Engagement_Ctlr();
ctrlAttach.attach.body=bodyBlob;
ctrlAttach.attach.Name=’Unit Test Attachment1′;
ctrlAttach.save_to_file(ctrlAttach.attach.Name, ctrlAttach.attach.body, attach.parentId);
ID deleteAttachmentId = attach.Id;
Test.StopTest();
//*****************************************************
controller.getEngagement();
controller.getAttachments();
controller.AddAttachs();
controller.save();
//*****************************************************
}
}
Composants
Versions
Exemple 1 : tous les utilisateurs de la DR Grand-Ouest (un rôle et ses subordonnés).
Exemple 2 : tous les utilisateurs Back Office de toutes les Directions Régionales.
Requête non optimisée | Requête optimisée |
---|---|
SELECT MM.ID AS ID_METER, MIM.ID AS ID_INDEX, MM.ID_ROB_REG_RES_SITE, MM.METER_NAME, MM.GUID_METER AS ADDRESS, MIM.INDEX_NAME, MIV.CURRENT_INDEX_DATE, DECODE ( RLLOV.WORDING, 'lov_mode_saisie_comptage_index', MIV.CURRENT_INDEX_VALUE, 'lov_mode_saisie_comptage_consommation', MIV.CONSUMPTION, MIV.CURRENT_INDEX_VALUE ) AS LAST_INDEX_CURRENT_VALUE, ( SELECT ROB_MEA.WORDING FROM RUM_OBJECT_BASE ROB_MEA WHERE MM.ID_ROB_TYPE_METER = ROB_MEA.ID ) AS TYPE_METER, ROW_NUMBER() OVER (PARTITION BY MIV.ID_INDEX ORDER BY MIV.CURRENT_INDEX_DATE DESC) RN FROM MEA_METER MM, MEA_INDEX_METER MIM, MEA_INDEX_VALUES MIV, MEA_TYPE_COMPTAGE MTC, RUM_LINE_LIST_OF_VALUE RLLOV WHERE RLLOV.CODE_LIST = 'MODE SAISIE TYPE COMPTAGE' AND MM.ID = MIM.ID_METER AND MIM.ID = MIV.ID_INDEX AND MIM.ID_TYPE_COMPTAGE = MTC.ID AND MTC.ID_INPUT_MODE = RLLOV.ID | SELECT MM.ID AS ID_METER, MIM.ID AS ID_INDEX, MM.ID_ROB_REG_RES_SITE, MM.METER_NAME, MM.GUID_METER AS ADDRESS, MIM.INDEX_NAME, MIV.CURRENT_INDEX_DATE, DECODE ( RLLOV.WORDING, 'lov_mode_saisie_comptage_index', MIV.CURRENT_INDEX_VALUE, 'lov_mode_saisie_comptage_consommation', MIV.CONSUMPTION, MIV.CURRENT_INDEX_VALUE ) AS LAST_INDEX_CURRENT_VALUE, ( SELECT ROB_MEA.WORDING FROM RUM_OBJECT_BASE ROB_MEA WHERE MM.ID_ROB_TYPE_METER = ROB_MEA.ID AND ROB_MEA.ID_TYPE_OBJECT_BASE = 67 ) AS TYPE_METER, ROW_NUMBER() OVER (PARTITION BY MIV.ID_INDEX ORDER BY MIV.CURRENT_INDEX_DATE DESC) RN FROM MEA_METER MM, MEA_INDEX_METER MIM, MEA_INDEX_VALUES MIV, MEA_TYPE_COMPTAGE MTC, RUM_LINE_LIST_OF_VALUE RLLOV WHERE RLLOV.CODE_LIST = 'MODE SAISIE TYPE COMPTAGE' AND MM.ID = MIM.ID_METER AND MIM.ID = MIV.ID_INDEX AND MIM.ID_TYPE_COMPTAGE = MTC.ID AND MTC.ID_INPUT_MODE = RLLOV.ID |