Introduction
Ce guide vise à vous guider à travers le processus d’intégration efficace de Sirene avec Cirrus Shield.
Prérequis
Avant de pouvoir commencer à utiliser le service, vous devrez suivre les étapes suivantes :
Dans Sirene
1. Créer un compte Sirene :
Créez un compte Sirene en vous connectant sur le site insee.fr en utilisant le lien suivant : https://api.insee.fr/catalogue/site/themes/wso2/subthemes/insee/pages/item-info.jag?name=Sirene&version=V3&provider=insee
2. Obtenez les informations d’application (Clé du consommateur et Secret du consommateur) :
Après avoir créé votre compte, rendez-vous dans la section “Mes Applications”. Cliquez sur “Ajouter une application” pour créer une nouvelle application.
Une fois l’application créée, accédez à son nom, puis ouvrez l’onglet “Clés de production”. Vous pourrez y obtenir la Clé du consommateur (Consumer Key) et le Secret du consommateur (Consumer Secret).
Dans Cirrus Shield
- Installer le Plugin Sirene :
Accédez à “Configuration” dans Cirrus Shield, puis sélectionnez “Extensions”. Installez le plugin Sirene pour activer l’intégration.
2. Création de l’objet “Compte” :
Pour utiliser efficacement le plugin Sirene, assurez-vous que l’objet “Compte” est créé avec des champs spécifiques et des types de champ. Les champs essentiels pour l’intégration de Sirene sont “CodeAPE” et “SIRET”. Consultez les images fournies ci-dessous pour vous guider.
Pour pouvoir créer un objet, vous devez vous rendre dans Configuration -> Objets et cliquer sur le bouton pour créer un objet.
Après avoir créé l’objet, accédez à “Champs personnalisés” et créez un nouveau champ en vous basant sur les champs qui sont affichés dans l’image.
N.B. : Assurez-vous de créer les champs avec le même nom et le même type que ceux indiqués dans les images concernant l’objet “Compte”.
Il convient de faire de même pour le reste des champs en fonction de leur nom et de leur type de champ.
3. Bouton JavaScript :
Créez un bouton pour l’objet que vous allez utiliser avec Sirene. Pour pouvoir créer un bouton JavaScript, vous devez accéder à Configuration -> Objet -> Détails -> Boutons Personnalisés.
Bouton Personnalisés
Ensuite, vous créez un bouton avec les informations suivantes :
Voici le code que vous utiliserez pour le bouton :
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<style>
#myModalList {
max-height: 700px;
overflow-y: auto;
}
.modal {
display: none;
padding-top: 40px;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0, 0, 0);
background-color: rgba(0, 0, 0, 0.4);
}
.modal-content {
background-color: #fefefe;
margin: auto;
padding: 20px;
border: 1px solid #888;
width: 80%;
}
.close {
float: right;
font-size: 28px;
font-weight: bold;
}
#MySelectBtn {
float: right;
}
.close:hover,
.close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
}
.modalTable {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
.modalElem {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
.modalRow:nth-child(even) {
background-color: #dddddd;
}
.modalElem label {
display: inline;
}
#MySelectBtn,
.MyCancel {
margin-top: 10px;
padding: 5px 10px;
}
#myModalListInfo {
margin-bottom: 10px;
padding: 5px;
}
</style>
<div id="myModal" class="modal">
<div class="modal-content">
<span class="close">×</span>
<div id="myModalList" class="table-responsive"></div>
</div>
</div>
<script>
function GetCompanyInfo() {
var orgid = GetOrganizationInfo().Id;
var myRecordId = GetRecordGUID();
var recordData = GetDataByID(myRecordId, "Account", "Name, Company_Number");
console.log("record data");
console.log(recordData);
if (recordData.Company_Number == null || recordData.Company_Number == "null") {
var modal = document.getElementById("myModal");
var modalList = document.getElementById("myModalList");
console.log("modal list value")
console.log(modalList)
var span = document.getElementsByClassName("close")[0];
span.onclick = function () {
modal.style.display = "none";
modalList.innerHTML = "";
}
var companies;
$.ajax({
type: "GET",
async: false,
url: `https://sirene.cirrus-shield.net/Sirene?name=${recordData.Name}&orgid=${orgid}`,
success: function (Data) {
if (Data != undefined) {
companies = Data;
console.log("companies ");
console.log(companies);
var table = "<table class='modalTable table table-hover'>"
var hd = `<thead>
<tr class='modalRow'>
<th class='modalElem'></th>
<th class='modalElem'>SIRET</th>
<th class='modalElem'>Nom</th>
<th class='modalElem'>ADRESSE</th>
</tr>
</thead>`;
table += hd
companies.forEach(company => {
console.log("address etablissement")
console.log(company.adresseEtablissement);
var row = `<tr id=${company.siret} class='modalRow'>
<td class='modalElem'><input type="radio" id=${company.siret} name="company" value=${company.siret}></td>
<td class='modalElem'>${company.siret}</td>
<td class='modalElem'>${company.uniteLegale.denominationUniteLegale}</td>
<td class='modalElem'>
<label for=${company.siret} id='myLabel'>
${company.adresseEtablissement.numeroVoieEtablissement ?? ""} ${company.adresseEtablissement.typeVoieEtablissement ?? ""} ${company.adresseEtablissement.libelleVoieEtablissement ?? ""}, ${company.adresseEtablissement.codePostalEtablissement ?? ""} ${company.adresseEtablissement.libelleCommuneEtablissement ?? ""}
</label>
</td>
</tr>`
table += row;
});
table += "</table>"
console.log("created table here")
var selectBtn = "<input type='button' value='Select' id='MySelectBtn'/>";
var cancelBtn = "<input type='button' value='Cancel' class='MyCancel'/>";
console.log("adding the showing first n results")
modalList.innerHTML += `<div id="myModalListInfo">Showing first <strong>${Object.keys(companies).length < 100 ? Object.keys(companies).length : 100}</strong> results</div>`
console.log("adding the table")
modalList.innerHTML += table;
// console.log("adding the select button")
// modalList.innerHTML += selectBtn;
// console.log("adding the cancel button")
// modalList.innerHTML += cancelBtn;
modalList.insertAdjacentHTML('afterend', selectBtn);
modalList.insertAdjacentHTML('afterend', cancelBtn);
modal.style.display = "block";
console.log("getting the MySelectBtn tag")
var selBtn = document.getElementById("MySelectBtn");
console.log(selBtn);
console.log("setting the onclick for MySelectBtn")
selBtn.onclick = function () {
getSelected(myRecordId, recordData.Name, orgid)
};
console.log("getting MyCancel tag");
var delBtn = document.getElementsByClassName("MyCancel")[0];
console.log("setting the onclick for MyCancel")
delBtn.onclick = function () {
modal.style.display = "none";
modalList.innerHTML = "";
}
}
else {
console.log("no companies")
companies = null;
}
},
error: function (XMLHttpRequest) {
alert(XMLHttpRequest.responseText);
}
});
$('.modalTable tbody tr').click(function (event) {
if (event.target.type !== 'radio') {
$(':radio', this).trigger('click');
}
});
}
else {
addCompanyInfo(recordData.Company_Number, myRecordId, recordData.Name, orgid);
}
}
function getSelected(myRecordId, name, orgid) {
var mySiret = document.querySelector("input[name=company]:checked").value;
console.log("Name of selected record: " + name);
console.log("Siret of selected record: " + mySiret);
addCompanyInfo(mySiret, myRecordId, name, orgid);
}
function addCompanyInfo(siret, myRecordId, name, orgid) {
var companyInfo;
$.ajax({
type: "GET",
async: false,
url: `https://sirene.cirrus-shield.net/Sirene/${siret}?orgid=${orgid}`,
success: function (Data) {
if (Data != undefined) {
companyInfo = Data;
console.log(companyInfo);
}
else {
companyInfo = null;
}
},
error: function (XMLHttpRequest) {
alert(XMLHttpRequest.responseText);
//var response = JSON.parse(XMLHttpRequest.responseText);
//console.log(response);
//if (response.status == 404) {
// alert("No company found with this siret: " + siret + ".")
//}
//else {
// alert(response.title);
//}
}
});
if (companyInfo != null) {
name = name.toUpperCase() == companyInfo.uniteLegale.denominationUniteLegale ? name : companyInfo.uniteLegale.denominationUniteLegale;
var docAcc = document.implementation.createDocument("", "", null);
var xmlAccData = docAcc.createElement("Data");
var xmlAcc = docAcc.createElement("Account");
var element;
element = docAcc.createElement("Id");
element.textContent = myRecordId;
xmlAcc.appendChild(element);
element = docAcc.createElement("Name");
element.textContent = name;
xmlAcc.appendChild(element);
//element = docAcc.createElement("Company_Creation_Date");
//element.textContent = companyInfo.uniteLegale.dateCreationUniteLegale;
//xmlAcc.appendChild(element);
element = docAcc.createElement("Nom_du_dirigeant");
element.textContent = companyInfo.uniteLegale.nomUniteLegale ?? "";
xmlAcc.appendChild(element);
element = docAcc.createElement("Prenom_du_dirigeant");
element.textContent = companyInfo.uniteLegale.prenom1UniteLegale ?? "";
xmlAcc.appendChild(element);
element = docAcc.createElement("Code_NAF");
element.textContent = companyInfo.uniteLegale.activitePrincipaleUniteLegale ?? "";
xmlAcc.appendChild(element);
element = docAcc.createElement("Effectifs");
element.textContent = companyInfo.uniteLegale.trancheEffectifsUniteLegale;
xmlAcc.appendChild(element);
element = docAcc.createElement("Company_Number");
element.textContent = siret;
xmlAcc.appendChild(element);
element = docAcc.createElement("Billing_Street");
element.textContent = `${companyInfo.adresseEtablissement.numeroVoieEtablissement ?? ""} ${companyInfo.adresseEtablissement.typeVoieEtablissement ?? ""} ${companyInfo.adresseEtablissement.libelleVoieEtablissement ?? ""}`;
xmlAcc.appendChild(element);
console.log(companyInfo.adresseEtablissement.libelleCommuneEtablissement);
element = docAcc.createElement("Billing_City");
element.textContent = companyInfo.adresseEtablissement.libelleCommuneEtablissement ?? "";
xmlAcc.appendChild(element);
element = docAcc.createElement("Billing_Country");
element.textContent = "France";
xmlAcc.appendChild(element);
element = docAcc.createElement("Billing_ZIP");
element.textContent = companyInfo.adresseEtablissement.codePostalEtablissement ?? "";
xmlAcc.appendChild(element);
xmlAccData.appendChild(xmlAcc);
docAcc.appendChild(xmlAccData);
try {
// Update account
console.log("### UPDATING ACCOUNT ###\n" + (new XMLSerializer()).serializeToString(docAcc));
var ObjResAcc = UpdateRecord("Account", "Id", docAcc, false)
if (!ObjResAcc.msgSuccess) {
alert(ObjResAcc.msgInfo);
return;
}
console.log("### UPDATING ACCOUNT SERVER RESPONSE ###\n" + ObjResAcc.msgInfo);
location = location;
} catch (ex) {
var errorMsg = "An error happened while updating the account.\n " + ex.message;
alert(errorMsg);
return;
}
}
}
</script>
Assurez-vous de modifier la visibilité du bouton en fonction des utilisateurs qui l’utiliseront. Vous pouvez le faire en accédant à l’objet où vous avez créé le bouton -> Détails du bouton -> Profils.
Et enfin, vous pourrez voir le bouton dans la page de détails de l’enregistrement de l’objet spécifique que vous avez choisi.
Configuration
Pour configurer le plugin que vous avez installé, vous devrez accéder aux détails du plugin Sirene installé.
Vous serez dirigé vers la page de configuration. Commencez par ajouter vos identifiants Cirrus Shield (Nom d’utilisateur et Mot de passe), vos identifiants Sirene (Jeton d’accès).
Vous pouvez également cocher la case si vous souhaitez recevoir des informations sur les nouvelles entreprises en France quotidiennement. Ajoutez le CodeAPE de votre choix, vous pouvez en entrer un ou plusieurs en fonction de vos préférences, puis cliquez sur “Créer”. Votre configuration sera enregistrée dans Cirrus Shield.