{"id":209,"date":"2019-01-23T00:44:24","date_gmt":"2019-01-22T23:44:24","guid":{"rendered":"https:\/\/cc-coeurdefrance.fr\/?page_id=209"},"modified":"2026-05-26T10:25:38","modified_gmt":"2026-05-26T10:25:38","slug":"order-gift-vouchers","status":"publish","type":"page","link":"https:\/\/cc-coeurdefrance.fr\/en\/services-a-la-population\/commander-des-cheques-cadeaux\/","title":{"rendered":"Order gift vouchers"},"content":{"rendered":"<h2 style=\"text-align: left;\">L&rsquo;id\u00e9e pratique pour faire plaisir<\/h2>\n<h5>Service de d\u00e9veloppement \u00e9conomique<\/h5>\n<p><strong>Communaut\u00e9 de Communes Coeur de France<\/strong><\/p>\n<blockquote>\n<p>1 rue Philibert-Audebrand<br \/>18200 Saint-Amand-Montrond<\/p>\n<p><u>Ouvertures\u00a0:<\/u><br \/><span class=\"s19\">du<\/span><span class=\"s19\"> lundi au vendredi<br \/>de <\/span><span class=\"s19\">8 h 30<\/span><span class=\"s19\"> h \u00e0 12 h et de 14 h \u00e0 17h<\/span><\/p>\n<p><strong>Votre contact :<\/strong><br \/>06 66 39 97 66<br \/><a href=\"mailto:omca@cc-coeurdefrance.fr\" target=\"_blank\" rel=\"noopener noreferrer\">gaelle.jonin@cc-coeurdefrance.fr<\/a><\/p>\n<\/blockquote>\n<h3>Le ch\u00e8que cadeau en 5 questions<\/h3>\n<h6>Un ch\u00e8que cadeau, c&rsquo;est quoi ?<\/h6>\n<blockquote>\n<p>C&rsquo;est un moyen de paiement qui peut \u00eatre utilis\u00e9 pour acheter ce que vous voulez<strong>*<\/strong> dans les commerces qui les acceptent.<br \/><strong>*<\/strong><em>voir modalit\u00e9s selon commerces<\/em><\/p>\n<\/blockquote>\n<h6>Un ch\u00e8que cadeau, qui peut l&rsquo;acheter ?<\/h6>\n<blockquote>\n<p>Les particuliers pour un cadeau.<br \/>Les entreprises sous forme de primes d\u00e9fiscalis\u00e9es (voir condition aupr\u00e8s du P\u00f4le de d\u00e9veloppement \u00e9conomique).<br \/>Les comit\u00e9s d&rsquo;entreprises, amicales du personnel, associations&#8230;<\/p>\n<\/blockquote>\n<h6>Un ch\u00e8que cadeau, quel commerce les accepte ?<\/h6>\n<blockquote>\n<p>Tout commerce ayant sign\u00e9 la convention. Ce commerce est identifiable gr\u00e2ce \u00e0 l&rsquo;autocollant appos\u00e9 sur sa vitrine.<\/p>\n<\/blockquote>\n<h6>Un ch\u00e8que cadeau, combien \u00e7a co\u00fbte ?<\/h6>\n<blockquote>\n<p>Vous d\u00e9sirez offrir 30 \u20ac en ch\u00e8que cadeau, cela co\u00fbte 30 \u20ac. Il n&rsquo;y a pas de frais suppl\u00e9mentaires.<\/p>\n<\/blockquote>\n<h6>Un ch\u00e8que cadeau, quelle validit\u00e9 ?<\/h6>\n<blockquote>\n<p>Le ch\u00e8que est valable 1 an.<\/p>\n<\/blockquote>\n<h1 style=\"text-align: center;\">Commander des ch\u00e8ques cadeaux<\/h1>\n<h2 style=\"text-align: center;\">+ de 130 commer\u00e7ants partenaires<\/h2>\n<p style=\"text-align: center;\">T\u00e9l\u00e9chargez la <a href=\"https:\/\/cc-coeurdefrance.fr\/wp-content\/uploads\/2026\/01\/Liste-des-commercant-CHQ_KDO_2026_01_19.pdf\" target=\"_blank\" rel=\"attachment noopener wp-att-8905\">liste des commer\u00e7ants <\/a>acceptant les ch\u00e8ques cadeaux<\/p>\n\n\n\n\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\">\n\n<style>\n  .cdf-toolbar { display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:10px 0; }\n  .cdf-toolbar label { font-weight:600; }\n  .cdf-toolbar select { min-width:340px; padding:8px; border:1px solid #ccc; border-radius:8px; }\n\n  \/* Carte plus haute *\/\n  #cdf-map { height: 900px; width:100%; border-radius:12px; }\n  #cdf-status { margin-top:8px; font-size:1rem; }\n.leaflet-interactive:focus { outline: none; }\n\n  \/* Popups beaucoup plus lisibles *\/\n  .leaflet-popup-content {\n    min-width: 420px;\n    max-width: 640px;\n    font-size: 16px;\n    line-height: 1.35;\n    margin: 10px 14px;\n  }\n  .cdf-popup { max-height: 420px; overflow: auto; }\n  .cdf-popup .title { font-weight: 800; font-size: 18px; margin-bottom: 6px; }\n  .cdf-popup .meta { margin-top: 6px; }\n  .cdf-popup .muted { opacity: .85; }\n\n<\/style>\n\n<div class=\"cdf-toolbar\">\n  <label for=\"cdf-type\">Type de commerce<\/label>\n  <select id=\"cdf-type\">\n    <option value=\"\">Tous les commerces<\/option>\n  <\/select>\n<\/div>\n\n<div id=\"cdf-map\" aria-label=\"Carte des commer\u00e7ants partenaires\"><\/div>\n<div id=\"cdf-status\">Chargement\u2026<\/div>\n\n<script src=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\"><\/script>\n\n<script>\n(function () {\n  const typeEl   = document.getElementById(\"cdf-type\");\n  const statusEl = document.getElementById(\"cdf-status\");\n\n  const setStatus = (s) => statusEl.textContent = s;\n  const warn = (s) => console.warn(\"[CDF]\", s);\n\n  const escapeHtml = (str) =>\n    String(str ?? \"\").replace(\/[&<>\"']\/g, m => ({\n      \"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#039;\"\n    }[m]));\n\n  function normalize(s) {\n    return String(s ?? \"\")\n      .normalize(\"NFD\").replace(\/[\\u0300-\\u036f]\/g, \"\")\n      .replace(\/\\u00A0\/g, \" \")\n      .replace(\/&\/g, \"et\")\n      .replace(\/[\u2013\u2014-]\/g, \" \")\n      .replace(\/\\s+\/g, \" \")\n      .trim()\n      .toLowerCase();\n  }\n\n  \/\/ ========================\n  \/\/ CONFIG OPEN-DATA\n  \/\/ ========================\n  const ODS_DOMAIN  = \"https:\/\/opendata.cc-coeurdefrance.fr\";\n  const DATASET_ID  = \"liste-des-commercant-chq_kdo_2026_01_19\";\n  const GEO_FIELD   = \"point_gps\";\n  const FACET_FIELD = \"type_de_commerce\";\n\n  const POPUP_FIELDS = [\n    \"nom_de_l_entreprise\",\n    \"type_de_commerce\",\n    \"sous_categorie\",\n    \"adresse\",\n    \"code_postal\",\n    \"commune\",\n    \"numero_de_telephone\"\n  ];\n\n  \/\/ ========================\n  \/\/ COMMUNES (primaire + fallback)\n  \/\/ ========================\n  const EPCI_CODE = \"200036135\";\n  const COMMUNES_URL_PRIMARY =\n    `https:\/\/geo.api.gouv.fr\/epcis\/${EPCI_CODE}\/communes?format=geojson&geometry=contour&fields=nom,code`;\n\n  \/\/ \u2705 \u00c0 REMPLACER : h\u00e9berge ce GeoJSON sur ton domaine (M\u00e9dias WP) ou sur ton open-data\n  \/\/ Exemple : \"https:\/\/cc-coeurdefrance.fr\/wp-content\/uploads\/communes-coeurdefrance.geojson\"\n  const COMMUNES_URL_FALLBACK =\n    \"https:\/\/cc-coeurdefrance.fr\/wp-content\/uploads\/communes-coeurdefrance.geojson\";\n\n  \/\/ ========================\n  \/\/ Ordre m\u00e9tier des types\n  \/\/ ========================\n  const ORDER = [\n    \"\u00c9quipement de la personne\",\n    \"Hygi\u00e8ne & Sant\u00e9\",\n    \"\u00c9quipement de la maison\",\n    \"Alimentation\",\n    \"Caf\u00e9 - H\u00f4tel - Restaurant\",\n    \"Culture & Loisirs\",\n    \"Service\",\n    \"Automobile - Moto - Cycles\"\n  ];\n\n  const PAGE_SIZE = 100;\n\n  \/\/ ========================\n  \/\/ CARTE\n  \/\/ ========================\n  const map = L.map(\"cdf-map\", { scrollWheelZoom:true }).setView([46.75, 2.55], 12);\n  L.tileLayer(\"https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png\", { maxZoom:19 }).addTo(map);\n\n  const communesLayer = L.geoJSON(null, {\n  style: () => ({\n    color: \"#00ADA9\",   \/\/ \u2b05\ufe0f couleur du contour\n    weight: 2,          \/\/ \u00e9paisseur du trait\n    opacity: 1,\n    fillOpacity: 0      \/\/ PAS de remplissage\n  }),\n  onEachFeature: (feature, layer) => {\n    const nom = feature.properties?.nom;\n    if (nom) layer.bindTooltip(nom, { sticky:true });\n\n    layer.on(\"mouseover\", () => {\n      layer.setStyle({\n        weight: 3,\n        color: \"#00ADA9\" \/\/ m\u00eame couleur, mais plus \u00e9pais\n      });\n    });\n\n    layer.on(\"mouseout\", () => {\n      layer.setStyle({\n        weight: 2,\n        color: \"#00ADA9\"\n      });\n    });\n\n    layer.on(\"click\", () => {\n      try {\n        map.fitBounds(layer.getBounds(), { padding:[20,20] });\n      } catch(e){}\n    });\n  }\n}).addTo(map);\n\n  const pointsLayer = L.layerGroup().addTo(map);\n\n  function buildWhere() {\n    if (!typeEl.value) return \"\"; \/\/ Tous les commerces\n    return `${FACET_FIELD} = \"${String(typeEl.value).replace(\/\"\/g,'\\\\\"')}\"`;\n  }\n\n  function buildPopup(rec) {\n    const name = rec.nom_de_l_entreprise || \"Commerce\";\n    const type = rec.type_de_commerce || \"\";\n    const sous = rec.sous_categorie || \"\";\n    const adr  = rec.adresse || \"\";\n    const cp   = rec.code_postal || \"\";\n    const com  = rec.commune || \"\";\n    const tel  = rec.numero_de_telephone || \"\";\n\n    return `\n      <div class=\"cdf-popup\">\n        <div class=\"title\">${escapeHtml(name)}<\/div>\n        ${type ? `<div class=\"muted\">${escapeHtml(type)}${sous ? \" \u2013 \" + escapeHtml(sous) : \"\"}<\/div>` : \"\"}\n        ${(adr || cp || com) ? `<div class=\"meta\">${escapeHtml(adr)}<br>${escapeHtml(cp)} ${escapeHtml(com)}<\/div>` : \"\"}\n        ${tel ? `<div class=\"meta\"><strong>T\u00e9l :<\/strong> ${escapeHtml(tel)}<\/div>` : \"\"}\n      <\/div>`;\n  }\n\n  async function fetchGeoJson(url) {\n    const r = await fetch(url, { cache:\"no-store\" });\n    if (!r.ok) throw new Error(`HTTP ${r.status} sur ${url}`);\n    return r.json();\n  }\n\n  async function loadCommunesWithFallback() {\n    \/\/ 1) Essai geo.api\n    try {\n      const gj = await fetchGeoJson(COMMUNES_URL_PRIMARY);\n      communesLayer.addData(gj);\n      return \"geo.api.gouv.fr\";\n    } catch (e) {\n      warn(\"\u00c9chec chargement communes via geo.api : \" + e);\n    }\n\n    \/\/ 2) Fallback local\n    try {\n      const gj = await fetchGeoJson(COMMUNES_URL_FALLBACK);\n      communesLayer.addData(gj);\n      return \"fallback local\";\n    } catch (e) {\n      warn(\"\u00c9chec chargement communes via fallback : \" + e);\n      return null;\n    }\n  }\n\n  async function loadTypeDropdown() {\n    typeEl.innerHTML = '<option value=\"\">Tous les commerces<\/option>';\n\n    \/\/ Facets via API v1 (fiable)\n    const url =\n      `${ODS_DOMAIN}\/api\/records\/1.0\/search\/` +\n      `?dataset=${encodeURIComponent(DATASET_ID)}` +\n      `&rows=0` +\n      `&facet=${encodeURIComponent(FACET_FIELD)}`;\n\n    const r = await fetch(url, { cache:\"no-store\" });\n    if (!r.ok) throw new Error(\"Facets v1 HTTP \" + r.status);\n    const data = await r.json();\n\n    const group = (data.facet_groups || []).find(g => g.name === FACET_FIELD);\n    const facets = group ? (group.facets || []) : [];\n\n    const byNorm = new Map(facets.map(f => [normalize(f.name), f]));\n    const used = new Set();\n\n    for (const label of ORDER) {\n      const hit = byNorm.get(normalize(label));\n      if (!hit) continue;\n      const opt = document.createElement(\"option\");\n      opt.value = hit.name; \/\/ valeur r\u00e9elle (sert au where)\n      opt.textContent = `${label} (${hit.count})`;\n      typeEl.appendChild(opt);\n      used.add(normalize(hit.name));\n    }\n\n    \/\/ Ajoute le reste \u00e0 la fin (typos \/ nouvelles valeurs)\n    facets\n      .filter(f => !used.has(normalize(f.name)))\n      .sort((a,b) => String(a.name).localeCompare(String(b.name), \"fr\"))\n      .forEach(f => {\n        const opt = document.createElement(\"option\");\n        opt.value = f.name;\n        opt.textContent = `${f.name} (${f.count})`;\n        typeEl.appendChild(opt);\n      });\n  }\n\n  async function loadRecords() {\n    setStatus(\"Chargement des commer\u00e7ants\u2026\");\n    pointsLayer.clearLayers();\n\n    let offset = 0;\n    let shown = 0;\n    let bounds = null;\n\n    while (true) {\n      const base = `${ODS_DOMAIN}\/api\/explore\/v2.1\/catalog\/datasets\/${encodeURIComponent(DATASET_ID)}\/records`;\n      const params = new URLSearchParams({ limit: String(PAGE_SIZE), offset: String(offset) });\n      params.append(\"select\", [GEO_FIELD, ...POPUP_FIELDS].join(\",\"));\n\n      const where = buildWhere();\n      if (where) params.set(\"where\", where);\n\n      const r = await fetch(`${base}?${params.toString()}`, { cache:\"no-store\" });\n      if (!r.ok) throw new Error(\"Records HTTP \" + r.status);\n      const data = await r.json();\n\n      const results = data.results || [];\n      if (!results.length) break;\n\n      for (const rec of results) {\n        const gp = rec[GEO_FIELD];\n        if (!gp || typeof gp.lat !== \"number\" || typeof gp.lon !== \"number\") continue;\n\n\/\/ 1) Point visible (contour orange, pas de remplissage)\nconst visible = L.circleMarker([gp.lat, gp.lon], {\n  radius: 7,\n  color: \"#F18556\",\n  weight: 2,\n  fillOpacity: 0\n}).addTo(pointsLayer);\n\n\/\/ 2) Zone cliquable invisible (hitbox)\nconst hit = L.circleMarker([gp.lat, gp.lon], {\n  radius: 16,           \/\/ \u2b05\ufe0f augmente la facilit\u00e9 de clic\n  color: \"transparent\",\n  weight: 0,\n  fillOpacity: 0,\n  interactive: true\n}).addTo(pointsLayer);\n\n\/\/ Popup sur la hitbox (pas sur le point visible)\nhit.bindPopup(buildPopup(rec), { maxWidth: 680, autoPanPadding: [30,30] });\n\n\/\/ Emp\u00eache le clic de se propager \u00e0 la commune derri\u00e8re\nhit.on(\"click\", (e) => L.DomEvent.stopPropagation(e));\n\nbounds = bounds ? bounds.extend(hit.getLatLng()) : L.latLngBounds(hit.getLatLng(), hit.getLatLng());\nshown++;\n\n      }\n\n      offset += results.length;\n      if (results.length < PAGE_SIZE) break;\n    }\n\n    \/\/ Zoom intelligent : sur les points (et ensuite on pr\u00e9f\u00e9rera les communes si dispo)\n    if (bounds) map.fitBounds(bounds, { padding:[20,20] });\n    setStatus(`Affichage : ${shown} commerce(s)`);\n  }\n\n  async function init() {\n    const src = await loadCommunesWithFallback();\n    if (src) {\n      setStatus(`Communes charg\u00e9es (${src}). Chargement des donn\u00e9es\u2026`);\n      try { map.fitBounds(communesLayer.getBounds(), { padding:[10,10] }); } catch(e){}\n    } else {\n      setStatus(\"Contours des communes indisponibles. Chargement des donn\u00e9es\u2026\");\n    }\n\n    await loadTypeDropdown();\n    await loadRecords();\n\n    typeEl.addEventListener(\"change\", loadRecords);\n    setStatus(\"Pr\u00eat.\");\n  }\n\n  init().catch(e => {\n    console.error(e);\n    setStatus(\"Erreur : \" + (e?.message || e));\n  });\n\n})();\n<\/script>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;id\u00e9e pratique pour faire plaisir Service de d\u00e9veloppement \u00e9conomique Communaut\u00e9 de Communes Coeur de France 1 rue Philibert-Audebrand18200 Saint-Amand-Montrond Ouvertures\u00a0:du lundi au vendredide 8 h 30 h \u00e0 12 h et de 14 h \u00e0 17h Votre contact :06 66 39 97 66gaelle.jonin@cc-coeurdefrance.fr Le ch\u00e8que cadeau en 5 questions Un ch\u00e8que cadeau, c&rsquo;est quoi ? [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":11262,"parent":13644,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","footnotes":""},"rubrique":[],"class_list":["post-209","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/cc-coeurdefrance.fr\/en\/wp-json\/wp\/v2\/pages\/209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cc-coeurdefrance.fr\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cc-coeurdefrance.fr\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cc-coeurdefrance.fr\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/cc-coeurdefrance.fr\/en\/wp-json\/wp\/v2\/comments?post=209"}],"version-history":[{"count":0,"href":"https:\/\/cc-coeurdefrance.fr\/en\/wp-json\/wp\/v2\/pages\/209\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/cc-coeurdefrance.fr\/en\/wp-json\/wp\/v2\/pages\/13644"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cc-coeurdefrance.fr\/en\/wp-json\/wp\/v2\/media\/11262"}],"wp:attachment":[{"href":"https:\/\/cc-coeurdefrance.fr\/en\/wp-json\/wp\/v2\/media?parent=209"}],"wp:term":[{"taxonomy":"rubrique","embeddable":true,"href":"https:\/\/cc-coeurdefrance.fr\/en\/wp-json\/wp\/v2\/rubrique?post=209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}