[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-content-ccn-employes-et-agents-de-maitrise-des-commerces-de-fr":3,"footer-cities-fr":66},{"slug":4,"title":5,"page_title":6,"description":7,"content_md":8,"local_slug":4,"json_ld":9,"faq":29,"tool_html":60,"source":61,"category":62,"audience":63,"publish_mode":64,"hero_image":65,"hero_image_alt":5},"ccn-employes-et-agents-de-maitrise-des-commerces-de","CCN Quincaillerie & Fournitures industrielles — calculateur complet","Calculateur CCN Quincaillerie Fournitures industrielles IDCC 1383 | Expert Zoom","Outil interactif couvrant l'indemnité de licenciement, le préavis, la grille salariale, la prime d'ancienneté et les congés payés de la CCN Quincaillerie (IDCC 1383).","Ce calculateur couvre les 5 principales déviations de la convention collective IDCC 1383 (quincaillerie, fournitures industrielles) : indemnité de licenciement (seuil abaissé à 2 mois), préavis par statut, grille salariale en 21 niveaux (min. 1 820 € au 1er avr. 2025), prime d'ancienneté obligatoire (3 % à 15 %) et congés payés majorés selon l'ancienneté (+1 à +3 jours).",[10],{"name":11,"@type":12,"about":13,"author":17,"@context":20,"isPartOf":21,"inLanguage":24,"description":25,"operatingSystem":26,"applicationCategory":27,"isAccessibleForFree":28},"Calculateur CCN Quincaillerie & Fournitures industrielles — IDCC 1383","WebApplication",{"name":14,"@type":15,"identifier":16},"Convention collective nationale des commerces de quincaillerie, fournitures industrielles, fers, métaux et équipement de la maison","Thing","IDCC 1383",{"name":18,"@type":19},"Expert-Zoom","Organization","https:\u002F\u002Fschema.org",{"url":22,"@type":23},"\u002Ffr\u002Fmagazine\u002Fjuridique\u002Fles-conventions-collectives-en-france","Article","fr","Outil interactif couvrant l'indemnité de licenciement, le préavis, la grille salariale, la prime d'ancienneté et les congés payés de la convention collective IDCC 1383 (commerces de quincaillerie, fournitures industrielles).","All","FinanceApplication",true,[30,33,36,39,42,45,48,51,54,57],{"a":31,"q":32},"La convention collective IDCC 1383 abaisse le seuil à 2 mois d'ancienneté, contre 8 mois dans le code du travail (art. L1234-9). Tout salarié licencié (hors faute grave ou lourde) ayant au moins 2 mois de présence ouvre droit à l'indemnité.","Quelle est la durée minimale d'ancienneté pour toucher l'indemnité de licenciement dans la CCN quincaillerie (IDCC 1383) ?",{"a":34,"q":35},"La formule est identique à la loi : ¼ de mois de salaire de référence par année d'ancienneté pour les 10 premières années, puis ⅓ de mois au-delà de 10 ans. Le salaire de référence correspond à la moyenne des 12 derniers mois (ou des 3 derniers si plus favorable).","Comment est calculée l'indemnité de licenciement dans la convention collective quincaillerie ?",{"a":37,"q":38},"Les agents de maîtrise bénéficient d'un préavis de 2 mois dès le premier jour, quelle que soit leur ancienneté. C'est plus favorable que le code du travail qui ne prévoit 2 mois qu'après 2 ans d'ancienneté. Les cadres bénéficient de 3 mois.","Quelle est la durée du préavis pour un agent de maîtrise dans la CCN IDCC 1383 ?",{"a":40,"q":41},"Au 1er avril 2025, la grille conventionnelle IDCC 1383 comporte 21 niveaux hiérarchiques. Le salaire minimum du niveau 1 est de 1 820 € brut mensuel (base 35h), légèrement supérieur au SMIC. Le niveau le plus élevé (niveau 21) atteint 4 701 € brut mensuel.","Quels sont les salaires minimaux dans la convention collective quincaillerie en 2025 ?",{"a":43,"q":44},"Oui. La CCN IDCC 1383 impose une Rémunération Annuelle Garantie (RAG) intégrant une prime d'ancienneté obligatoire : +3 % après 3 ans, +6 % après 6 ans, +9 % après 9 ans, +12 % après 12 ans et +15 % après 15 ans, calculés sur le salaire minimum conventionnel annuel.","La convention collective quincaillerie prévoit-elle une prime d'ancienneté ?",{"a":46,"q":47},"La CCN IDCC 1383 accorde des jours de congés d'ancienneté en plus des 30 jours ouvrables légaux : +1 jour après 15 ans d'ancienneté, +2 jours après 20 ans, +3 jours après 25 ans. Des jours de fractionnement s'ajoutent si des congés sont pris hors de la période principale (mai–octobre).","Combien de jours de congés payés supplémentaires prévoit la CCN quincaillerie ?",{"a":49,"q":50},"Non, les majorations de la CCN 1383 sont identiques au code du travail : +25 % pour les 8 premières heures supplémentaires hebdomadaires, +50 % au-delà. La convention précise toutefois un contingent annuel de 240 heures et prévoit la possibilité de remplacer la majoration financière par un repos compensateur équivalent.","Les heures supplémentaires bénéficient-elles d'une majoration spécifique dans la CCN 1383 ?",{"a":52,"q":53},"Oui. Les salariés travaillant de façon permanente dans des locaux en sous-sol ont droit à 1 jour de congé supplémentaire par trimestre, soit 4 jours par an, à condition d'avoir au moins 1 an d'ancienneté.","Un salarié en sous-sol bénéficie-t-il de congés supplémentaires dans la CCN quincaillerie ?",{"a":55,"q":56},"Oui. La nouvelle convention collective nationale IDCC 1383, signée le 24 novembre 2021 et regroupant les anciens textes employés (IDCC 1383) et cadres (IDCC 731), est entrée en vigueur le 1er août 2023 et s'applique pleinement en 2025.","La convention collective quincaillerie IDCC 1383 est-elle toujours en vigueur en 2025 ?",{"a":58,"q":59},"La CCN IDCC 1383 couvre les établissements dont l'activité principale est le commerce de quincaillerie, fournitures industrielles, fers, aciers, métaux, équipement de la maison (bricolage inclus). Elle s'applique aux employés, agents de maîtrise et cadres de ces commerces.","Quelles entreprises sont couvertes par la convention collective IDCC 1383 ?","\u003C!DOCTYPE html>\n\u003Chtml lang=\"fr\">\n\u003Chead>\n  \u003Cmeta charset=\"utf-8\">\n  \u003Cmeta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n  \u003Ctitle>Calculateur CCN Quincaillerie IDCC 1383\u003C\u002Ftitle>\n  \u003Cscript src=\"https:\u002F\u002Funpkg.com\u002Flucide@latest\u002Fdist\u002Fumd\u002Flucide.min.js\">\u003C\u002Fscript>\n  \u003Cstyle>\n    \u002F* Design tokens *\u002F\n    :root {\n      --bg: #fafaf9;\n      --surface: #ffffff;\n      --border: #e7e5e4;\n      --accent: #2563eb;\n      --accent-light: #dbeafe;\n      --accent-dark: #1d4ed8;\n      --text: #1c1917;\n      --text-muted: #78716c;\n      --success-bg: #f0fdf4;\n      --success-border: #bbf7d0;\n      --success-text: #166534;\n      --info-bg: #eff6ff;\n      --info-border: #bfdbfe;\n      --info-text: #1e40af;\n      --warn-bg: #fffbeb;\n      --warn-border: #fde68a;\n      --warn-text: #92400e;\n      --radius: 0.75rem;\n      --radius-sm: 0.5rem;\n      --shadow: 0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.05);\n    }\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n    body {\n      background: var(--bg);\n      font-family: system-ui, -apple-system, sans-serif;\n      font-size: 0.9375rem;\n      color: var(--text);\n      line-height: 1.6;\n    }\n    .tool-root {\n      max-width: 680px;\n      margin: 0 auto;\n      padding: 1.25rem 1rem 2rem;\n    }\n    \u002F* Header *\u002F\n    .tool-header {\n      margin-bottom: 1.25rem;\n    }\n    .tool-header h1 {\n      font-size: 1.125rem;\n      font-weight: 700;\n      color: var(--text);\n      line-height: 1.3;\n    }\n    .tool-header .idcc-badge {\n      display: inline-flex;\n      align-items: center;\n      gap: 0.25rem;\n      background: var(--accent-light);\n      color: var(--accent);\n      font-size: 0.8125rem;\n      font-weight: 600;\n      padding: 0.2rem 0.6rem;\n      border-radius: 999px;\n      margin-top: 0.35rem;\n    }\n    \u002F* Tabs *\u002F\n    .tabs-nav {\n      display: flex;\n      gap: 0.25rem;\n      border-bottom: 2px solid var(--border);\n      margin-bottom: 1.25rem;\n      overflow-x: auto;\n      scrollbar-width: none;\n    }\n    .tabs-nav::-webkit-scrollbar { display: none; }\n    .tab-btn {\n      flex-shrink: 0;\n      padding: 0.5rem 0.875rem;\n      font-size: 0.875rem;\n      font-weight: 500;\n      color: var(--text-muted);\n      background: none;\n      border: none;\n      border-bottom: 2px solid transparent;\n      margin-bottom: -2px;\n      cursor: pointer;\n      border-radius: var(--radius-sm) var(--radius-sm) 0 0;\n      transition: color 0.15s, border-color 0.15s;\n      white-space: nowrap;\n    }\n    .tab-btn:hover { color: var(--accent); }\n    .tab-btn.active {\n      color: var(--accent);\n      border-bottom-color: var(--accent);\n      background: var(--accent-light);\n    }\n    \u002F* Panel *\u002F\n    .tab-panel { display: none; }\n    .tab-panel.active { display: block; }\n    \u002F* Rule callout *\u002F\n    .rule-callout {\n      display: flex;\n      gap: 0.625rem;\n      align-items: flex-start;\n      background: var(--info-bg);\n      border: 1px solid var(--info-border);\n      border-radius: var(--radius-sm);\n      padding: 0.75rem 1rem;\n      margin-bottom: 1.125rem;\n      color: var(--info-text);\n      font-size: 0.875rem;\n      line-height: 1.5;\n    }\n    .rule-callout i { flex-shrink: 0; margin-top: 0.1rem; }\n    \u002F* Card *\u002F\n    .card {\n      background: var(--surface);\n      border: 1px solid var(--border);\n      border-radius: var(--radius);\n      padding: 1.125rem 1.25rem;\n      margin-bottom: 1rem;\n      box-shadow: var(--shadow);\n    }\n    \u002F* Form fields *\u002F\n    .field { margin-bottom: 1rem; }\n    .field:last-child { margin-bottom: 0; }\n    .field label {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      font-size: 0.875rem;\n      font-weight: 500;\n      color: var(--text);\n      margin-bottom: 0.4rem;\n    }\n    .field label span {\n      font-weight: 700;\n      color: var(--accent);\n      font-variant-numeric: tabular-nums;\n    }\n    input[type=\"range\"] {\n      width: 100%;\n      accent-color: var(--accent);\n      cursor: pointer;\n    }\n    select, input[type=\"number\"] {\n      width: 100%;\n      padding: 0.5rem 0.75rem;\n      border: 1px solid var(--border);\n      border-radius: var(--radius-sm);\n      font-size: 0.875rem;\n      color: var(--text);\n      background: var(--surface);\n      cursor: pointer;\n      outline: none;\n      transition: border-color 0.15s;\n    }\n    select:focus, input[type=\"number\"]:focus { border-color: var(--accent); }\n    \u002F* Pills *\u002F\n    .pills { display: flex; flex-wrap: wrap; gap: 0.375rem; }\n    .pill {\n      padding: 0.375rem 0.875rem;\n      border-radius: 999px;\n      font-size: 0.8125rem;\n      font-weight: 500;\n      border: 1.5px solid var(--border);\n      background: var(--surface);\n      color: var(--text-muted);\n      cursor: pointer;\n      transition: all 0.15s;\n    }\n    .pill.active {\n      background: var(--accent);\n      border-color: var(--accent);\n      color: #fff;\n    }\n    \u002F* Result card *\u002F\n    .result-card {\n      background: var(--success-bg);\n      border: 1.5px solid var(--success-border);\n      border-radius: var(--radius);\n      padding: 1.125rem 1.25rem;\n      margin-bottom: 1rem;\n    }\n    .result-card .result-label {\n      font-size: 0.8125rem;\n      font-weight: 600;\n      color: var(--success-text);\n      text-transform: uppercase;\n      letter-spacing: 0.04em;\n      margin-bottom: 0.25rem;\n    }\n    .result-card .result-value {\n      font-size: 1.875rem;\n      font-weight: 800;\n      color: var(--success-text);\n      font-variant-numeric: tabular-nums;\n      line-height: 1.2;\n    }\n    .result-card .result-detail {\n      font-size: 0.8125rem;\n      color: var(--success-text);\n      margin-top: 0.35rem;\n      opacity: 0.85;\n    }\n    \u002F* Toggle *\u002F\n    .toggle-wrap { display: flex; align-items: center; gap: 0.625rem; }\n    .toggle {\n      position: relative;\n      width: 2.5rem;\n      height: 1.375rem;\n      flex-shrink: 0;\n    }\n    .toggle input { opacity: 0; width: 0; height: 0; }\n    .toggle-slider {\n      position: absolute; inset: 0;\n      background: var(--border);\n      border-radius: 999px;\n      cursor: pointer;\n      transition: background 0.2s;\n    }\n    .toggle-slider::before {\n      content: '';\n      position: absolute;\n      width: 1rem; height: 1rem;\n      left: 0.2rem; top: 0.2rem;\n      background: white;\n      border-radius: 50%;\n      transition: transform 0.2s;\n    }\n    .toggle input:checked + .toggle-slider { background: var(--accent); }\n    .toggle input:checked + .toggle-slider::before { transform: translateX(1.125rem); }\n    \u002F* Disclaimer *\u002F\n    .disclaimer {\n      font-size: 0.8rem;\n      color: var(--text-muted);\n      border-top: 1px solid var(--border);\n      padding-top: 1rem;\n      margin-top: 0.5rem;\n      line-height: 1.6;\n    }\n    .disclaimer a { color: var(--accent); text-decoration: none; }\n    .disclaimer a:hover { text-decoration: underline; }\n    \u002F* Section title *\u002F\n    .section-title {\n      font-size: 0.75rem;\n      font-weight: 600;\n      text-transform: uppercase;\n      letter-spacing: 0.06em;\n      color: var(--text-muted);\n      margin-bottom: 0.625rem;\n    }\n    \u002F* Grid for grille salariale *\u002F\n    .grille-table {\n      width: 100%;\n      border-collapse: collapse;\n      font-size: 0.8125rem;\n    }\n    .grille-table th {\n      text-align: left;\n      padding: 0.4rem 0.5rem;\n      background: var(--bg);\n      color: var(--text-muted);\n      font-weight: 600;\n      border-bottom: 1px solid var(--border);\n    }\n    .grille-table td {\n      padding: 0.4rem 0.5rem;\n      border-bottom: 1px solid var(--border);\n    }\n    .grille-table tr.highlight td {\n      background: var(--accent-light);\n      color: var(--accent-dark);\n      font-weight: 600;\n    }\n  \u003C\u002Fstyle>\n\u003C\u002Fhead>\n\u003Cbody>\n\u003C!-- CCN IDCC 1383 — deviations\n     indemnite: L1234-9 → seuil d'ancienneté abaissé à 2 mois (vs 8 mois) ; formule identique\n     preavis: L1234-1 → agents de maîtrise : 2 mois dès le 1er jour (vs 1 mois \u003C 2 ans)\n     salaire-min: SMIC → grille conventionnelle 21 niveaux, min €1 820 (avr. 2025)\n     prime-anciennete: Aucun légal → RAG + % ancienneté : +3% (3 ans) à +15% (15 ans)\n     conges: L3141-3 → +1 jour (15 ans), +2 jours (20 ans), +3 jours (25 ans) d'ancienneté\n     heures-supp: aligne L3121-36, pas de déviation → onglet non émis\n-->\n\u003Cmain class=\"tool-root\">\n  \u003Cdiv class=\"tool-header\">\n    \u003Ch1>Convention collective — Quincaillerie &amp; Fournitures industrielles\u003C\u002Fh1>\n    \u003Cdiv class=\"idcc-badge\">\n      \u003Ci data-lucide=\"badge-check\" style=\"width:13px;height:13px;\">\u003C\u002Fi>\n      IDCC 1383\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003Cnav class=\"tabs-nav\" role=\"tablist\">\n    \u003Cbutton class=\"tab-btn\" data-tab=\"indemnite\" role=\"tab\">Indemnité\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"preavis\" role=\"tab\">Préavis\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"salaire-min\" role=\"tab\">Grille salariale\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"prime-anciennete\" role=\"tab\">Prime ancienneté\u003C\u002Fbutton>\n    \u003Cbutton class=\"tab-btn\" data-tab=\"conges\" role=\"tab\">Congés\u003C\u002Fbutton>\n  \u003C\u002Fnav>\n\n  \u003C!-- ═══ TAB 1 : INDEMNITÉ DE LICENCIEMENT ═══ -->\n  \u003Cdiv class=\"tab-panel\" data-panel=\"indemnite\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN IDCC 1383 abaisse le seuil d'ancienneté requise à \u003Cstrong>2 mois\u003C\u002Fstrong> (contre 8 mois dans le code du travail, art. L1234-9). La formule de calcul est identique à la loi : ¼ de mois par année ≤ 10 ans + ⅓ de mois par année au-delà.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"section-title\">Paramètres\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Salaire brut mensuel de référence \u003Cspan id=\"ind-salaire-val\">2 500 €\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"ind-salaire\" min=\"1400\" max=\"8000\" step=\"50\" value=\"2500\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Ancienneté (années complètes) \u003Cspan id=\"ind-anc-val\">5 ans\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"ind-anc\" min=\"0\" max=\"40\" step=\"1\" value=\"5\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"section-title\" style=\"margin-bottom:0.4rem;\">Motif de rupture\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"ind-motif-pills\">\n          \u003Cbutton class=\"pill active\" data-val=\"licenciement\">Licenciement (sauf faute grave)\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"faute\">Faute grave ou lourde\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"retraite\">Mise à la retraite\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"ind-result\">\n      \u003Cdiv class=\"result-label\">Indemnité de licenciement\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"ind-amount\">0 €\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"ind-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ═══ TAB 2 : PRÉAVIS ═══ -->\n  \u003Cdiv class=\"tab-panel\" data-panel=\"preavis\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN IDCC 1383 prévoit pour les \u003Cstrong>agents de maîtrise\u003C\u002Fstrong> un préavis de \u003Cstrong>2 mois dès le 1\u003Csup>er\u003C\u002Fsup> jour\u003C\u002Fstrong> (versus 1 mois &lt; 2 ans d'ancienneté dans le code du travail). Les employés suivent la grille légale ; les cadres bénéficient de 3 mois.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"section-title\">Paramètres\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"section-title\" style=\"margin-bottom:0.4rem;\">Catégorie\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"pre-statut-pills\">\n          \u003Cbutton class=\"pill active\" data-val=\"employe\">Employé\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"maitrise\">Agent de maîtrise\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"cadre\">Cadre\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Ancienneté (années complètes) \u003Cspan id=\"pre-anc-val\">3 ans\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"pre-anc\" min=\"0\" max=\"35\" step=\"1\" value=\"3\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"section-title\" style=\"margin-bottom:0.4rem;\">Sens de la rupture\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"pre-sens-pills\">\n          \u003Cbutton class=\"pill active\" data-val=\"licenciement\">Licenciement\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"demission\">Démission\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"pre-result\">\n      \u003Cdiv class=\"result-label\">Durée du préavis\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"pre-duree\">2 mois\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"pre-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"rule-callout\" style=\"background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn-text);\">\n      \u003Ci data-lucide=\"clock\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>Pendant le préavis, les employés bénéficient de \u003Cstrong>2 heures par jour ouvré\u003C\u002Fstrong> pour recherche d'emploi, sans réduction de salaire.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ═══ TAB 3 : GRILLE SALARIALE ═══ -->\n  \u003Cdiv class=\"tab-panel\" data-panel=\"salaire-min\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN IDCC 1383 fixe une grille de salaires minima conventionnels avec \u003Cstrong>21 niveaux hiérarchiques\u003C\u002Fstrong>. Au 1\u003Csup>er\u003C\u002Fsup> avril 2025, les minima vont de \u003Cstrong>1 820 € à 4 701 €\u003C\u002Fstrong> brut mensuel, au-dessus du SMIC (1 801,80 €).\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"section-title\">Sélectionner votre niveau\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel for=\"sal-niveau\">Niveau hiérarchique\u003C\u002Flabel>\n        \u003Cselect id=\"sal-niveau\">\n          \u003Coption value=\"1\">Niveau 1 — Coefficient 140\u003C\u002Foption>\n          \u003Coption value=\"2\">Niveau 2 — Coefficient 145\u003C\u002Foption>\n          \u003Coption value=\"3\">Niveau 3 — Coefficient 150\u003C\u002Foption>\n          \u003Coption value=\"4\">Niveau 4 — Coefficient 155\u003C\u002Foption>\n          \u003Coption value=\"5\">Niveau 5 — Coefficient 160\u003C\u002Foption>\n          \u003Coption value=\"6\">Niveau 6 — Coefficient 170\u003C\u002Foption>\n          \u003Coption value=\"7\">Niveau 7 — Coefficient 180\u003C\u002Foption>\n          \u003Coption value=\"8\">Niveau 8 — Coefficient 190\u003C\u002Foption>\n          \u003Coption value=\"9\">Niveau 9 — Coefficient 200\u003C\u002Foption>\n          \u003Coption value=\"10\">Niveau 10 — Coefficient 215\u003C\u002Foption>\n          \u003Coption value=\"11\">Niveau 11 — Coefficient 230\u003C\u002Foption>\n          \u003Coption value=\"12\">Niveau 12 — Coefficient 250\u003C\u002Foption>\n          \u003Coption value=\"13\">Niveau 13 — Coefficient 270\u003C\u002Foption>\n          \u003Coption value=\"14\">Niveau 14 — Coefficient 295\u003C\u002Foption>\n          \u003Coption value=\"15\">Niveau 15 — Coefficient 325\u003C\u002Foption>\n          \u003Coption value=\"16\">Niveau 16 — Coefficient 360\u003C\u002Foption>\n          \u003Coption value=\"17\">Niveau 17 — Coefficient 400\u003C\u002Foption>\n          \u003Coption value=\"18\">Niveau 18 — Coefficient 445\u003C\u002Foption>\n          \u003Coption value=\"19\">Niveau 19 — Coefficient 495\u003C\u002Foption>\n          \u003Coption value=\"20\">Niveau 20 — Coefficient 555\u003C\u002Foption>\n          \u003Coption value=\"21\">Niveau 21 — Coefficient 620\u003C\u002Foption>\n        \u003C\u002Fselect>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Temps de travail hebdomadaire (h) \u003Cspan id=\"sal-heures-val\">35 h\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"sal-heures\" min=\"24\" max=\"39\" step=\"1\" value=\"35\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"sal-result\">\n      \u003Cdiv class=\"result-label\">Salaire minimum conventionnel\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"sal-amount\">1 820 €\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"sal-detail\">brut mensuel — grille avr. 2025\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ═══ TAB 4 : PRIME D'ANCIENNETÉ ═══ -->\n  \u003Cdiv class=\"tab-panel\" data-panel=\"prime-anciennete\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN IDCC 1383 impose une \u003Cstrong>prime d'ancienneté obligatoire\u003C\u002Fstrong> via la Rémunération Annuelle Garantie (RAG) : +3 % dès 3 ans, +6 % (6 ans), +9 % (9 ans), +12 % (12 ans), +15 % (15 ans), calculés sur le salaire minimum conventionnel annuel.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"section-title\">Paramètres\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Salaire minimum conventionnel mensuel \u003Cspan id=\"pa-salaire-val\">2 000 €\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"pa-salaire\" min=\"1400\" max=\"5000\" step=\"50\" value=\"2000\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Ancienneté (années complètes) \u003Cspan id=\"pa-anc-val\">5 ans\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"pa-anc\" min=\"0\" max=\"30\" step=\"1\" value=\"5\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Temps de présence dans l'année (%)\u003Cspan id=\"pa-pres-val\">100 %\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"pa-pres\" min=\"10\" max=\"100\" step=\"5\" value=\"100\">\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"pa-result\">\n      \u003Cdiv class=\"result-label\">Prime d'ancienneté annuelle\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"pa-amount\">—\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"pa-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ═══ TAB 5 : CONGÉS PAYÉS ═══ -->\n  \u003Cdiv class=\"tab-panel\" data-panel=\"conges\">\n    \u003Cdiv class=\"rule-callout\">\n      \u003Ci data-lucide=\"info\" style=\"width:16px;height:16px;\">\u003C\u002Fi>\n      \u003Cp>La CCN IDCC 1383 accorde des \u003Cstrong>jours de congés d'ancienneté supplémentaires\u003C\u002Fstrong> au-delà des 30 jours ouvrables légaux : \u003Cstrong>+1 jour\u003C\u002Fstrong> à 15 ans, \u003Cstrong>+2 jours\u003C\u002Fstrong> à 20 ans, \u003Cstrong>+3 jours\u003C\u002Fstrong> à 25 ans d'ancienneté.\u003C\u002Fp>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"card\">\n      \u003Cdiv class=\"section-title\">Paramètres\u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Ancienneté (années complètes) \u003Cspan id=\"cg-anc-val\">12 ans\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"cg-anc\" min=\"0\" max=\"35\" step=\"1\" value=\"12\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Clabel>Mois travaillés dans l'année de référence \u003Cspan id=\"cg-mois-val\">12 mois\u003C\u002Fspan>\u003C\u002Flabel>\n        \u003Cinput type=\"range\" id=\"cg-mois\" min=\"1\" max=\"12\" step=\"1\" value=\"12\">\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"section-title\" style=\"margin-bottom:0.4rem;\">Travail permanent en sous-sol\u003C\u002Fdiv>\n        \u003Clabel class=\"toggle-wrap\" for=\"cg-soussol\">\n          \u003Cspan class=\"toggle\">\n            \u003Cinput type=\"checkbox\" id=\"cg-soussol\">\n            \u003Cspan class=\"toggle-slider\">\u003C\u002Fspan>\n          \u003C\u002Fspan>\n          \u003Cspan>+1 jour\u002Ftrimestre (≥ 1 an d'ancienneté)\u003C\u002Fspan>\n        \u003C\u002Flabel>\n      \u003C\u002Fdiv>\n      \u003Cdiv class=\"field\">\n        \u003Cdiv class=\"section-title\" style=\"margin-bottom:0.4rem;\">Fractionnement (jours pris hors mai–oct.)\u003C\u002Fdiv>\n        \u003Cdiv class=\"pills\" id=\"cg-frac-pills\">\n          \u003Cbutton class=\"pill active\" data-val=\"0\">Aucun\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"1\">3 à 5 jours → +1 j\u003C\u002Fbutton>\n          \u003Cbutton class=\"pill\" data-val=\"2\">6 jours et + → +2 j\u003C\u002Fbutton>\n        \u003C\u002Fdiv>\n      \u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"result-card\" id=\"cg-result\">\n      \u003Cdiv class=\"result-label\">Congés payés annuels\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-value\" id=\"cg-jours\">30 j\u003C\u002Fdiv>\n      \u003Cdiv class=\"result-detail\" id=\"cg-detail\">\u003C\u002Fdiv>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\n  \u003C!-- ═══ DISCLAIMER (shared) ═══ -->\n  \u003Cp class=\"disclaimer\">\n    Calcul indicatif basé sur la CCN IDCC 1383 (commerces de quincaillerie, fournitures industrielles — convention du 24 nov. 2021, en vigueur au 1\u003Csup>er\u003C\u002Fsup> août 2023).\n    Source : \u003Ca href=\"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Fconv_coll\u002Fid\u002FKALICONT000047839180\u002F\" target=\"_blank\" rel=\"noopener\">Légifrance\u003C\u002Fa>.\n    Grille salariale au 1\u003Csup>er\u003C\u002Fsup> avril 2025.\n    Pour toute validation légale\n  \u003C\u002Fp>\n\u003C\u002Fmain>\n\n\u003Cscript>\n\u002F\u002F ─── Shared state per tab ───────────────────────────────────────────────────\nconst fmt = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0 });\n\n\u002F\u002F ─── TAB 1: INDEMNITÉ ───────────────────────────────────────────────────────\nconst indState = { salaire: 2500, anc: 5, motif: 'licenciement' };\n\nfunction computeIndemnite(s) {\n  if (s.motif !== 'licenciement') return { amount: 0, detail: 'Aucune indemnité pour ce motif de rupture (faute grave\u002Flourde ou mise à la retraite conventionnelle).' };\n  if (s.anc \u003C 0.167) return { amount: 0, detail: 'Ancienneté insuffisante (seuil conventionnel : 2 mois).' };\n  const a1 = Math.min(s.anc, 10);\n  const a2 = Math.max(0, s.anc - 10);\n  const amount = s.salaire * (a1 * (1\u002F4) + a2 * (1\u002F3));\n  const detail = `¼ × ${a1} an${a1>1?'s':''} + ⅓ × ${a2} an${a2>1?'s':''} × ${fmt.format(s.salaire)}`;\n  return { amount, detail };\n}\n\nfunction renderIndemnite() {\n  const r = computeIndemnite(indState);\n  document.getElementById('ind-amount').textContent = fmt.format(r.amount);\n  document.getElementById('ind-detail').textContent = r.detail;\n  document.getElementById('ind-salaire-val').textContent = fmt.format(indState.salaire);\n  document.getElementById('ind-anc-val').textContent = indState.anc + (indState.anc > 1 ? ' ans' : ' an');\n}\n\ndocument.getElementById('ind-salaire').addEventListener('input', e => { indState.salaire = +e.target.value; renderIndemnite(); });\ndocument.getElementById('ind-anc').addEventListener('input', e => { indState.anc = +e.target.value; renderIndemnite(); });\ndocument.querySelectorAll('#ind-motif-pills .pill').forEach(p => p.addEventListener('click', () => {\n  document.querySelectorAll('#ind-motif-pills .pill').forEach(x => x.classList.remove('active'));\n  p.classList.add('active');\n  indState.motif = p.dataset.val;\n  renderIndemnite();\n}));\n\n\u002F\u002F ─── TAB 2: PRÉAVIS ─────────────────────────────────────────────────────────\nconst preState = { statut: 'employe', anc: 3, sens: 'licenciement' };\n\nfunction computePreavis(s) {\n  \u002F\u002F Licenciement\n  if (s.sens === 'licenciement') {\n    if (s.statut === 'cadre') return { duree: '3 mois', detail: 'Cadres : 3 mois quel que soit le sens de la rupture.' };\n    if (s.statut === 'maitrise') return { duree: '2 mois', detail: 'Agents de maîtrise : 2 mois dès le 1er jour (plus favorable que le code du travail).' };\n    \u002F\u002F Employés\n    if (s.anc \u003C 2) return { duree: '1 mois', detail: 'Employé : \u003C 2 ans d\\'ancienneté → 1 mois (identique à L1234-1).' };\n    return { duree: '2 mois', detail: 'Employé : ≥ 2 ans d\\'ancienneté → 2 mois.' };\n  }\n  \u002F\u002F Démission\n  if (s.statut === 'cadre') return { duree: '3 mois', detail: 'Cadres : 3 mois en cas de démission.' };\n  if (s.statut === 'maitrise') return { duree: '2 mois', detail: 'Agents de maîtrise : 2 mois en cas de démission.' };\n  if (s.anc \u003C 20) return { duree: '1 mois', detail: 'Employé (démission) : \u003C 20 ans d\\'ancienneté → 1 mois.' };\n  return { duree: '2 mois', detail: 'Employé (démission) : ≥ 20 ans d\\'ancienneté → 2 mois.' };\n}\n\nfunction renderPreavis() {\n  const r = computePreavis(preState);\n  document.getElementById('pre-duree').textContent = r.duree;\n  document.getElementById('pre-detail').textContent = r.detail;\n  document.getElementById('pre-anc-val').textContent = preState.anc + (preState.anc > 1 ? ' ans' : ' an');\n}\n\ndocument.getElementById('pre-anc').addEventListener('input', e => { preState.anc = +e.target.value; renderPreavis(); });\n['pre-statut-pills','pre-sens-pills'].forEach(groupId => {\n  document.querySelectorAll(`#${groupId} .pill`).forEach(p => p.addEventListener('click', () => {\n    document.querySelectorAll(`#${groupId} .pill`).forEach(x => x.classList.remove('active'));\n    p.classList.add('active');\n    if (groupId === 'pre-statut-pills') preState.statut = p.dataset.val;\n    else preState.sens = p.dataset.val;\n    renderPreavis();\n  }));\n});\n\n\u002F\u002F ─── TAB 3: GRILLE SALARIALE ─────────────────────────────────────────────────\n\u002F\u002F Minima bruts mensuels au 1er avril 2025 (base 35h\u002Fsemaine)\n\u002F\u002F Source: avenant grille salariale CCN 1383 — avr. 2025\nconst grilleSalaires = [1820,1855,1890,1930,1975,2030,2090,2155,2230,2315,2405,2510,2625,2755,2910,3085,3295,3540,3815,4145,4701];\n\nconst salState = { niveau: 1, heures: 35 };\n\nfunction computeSalaire(s) {\n  const base35 = grilleSalaires[s.niveau - 1];\n  const montant = base35 * (s.heures \u002F 35);\n  return { montant, base35 };\n}\n\nfunction renderSalaire() {\n  const r = computeSalaire(salState);\n  document.getElementById('sal-amount').textContent = fmt.format(r.montant);\n  document.getElementById('sal-detail').textContent = `brut mensuel (base ${salState.heures}h) — grille avr. 2025`;\n  document.getElementById('sal-heures-val').textContent = salState.heures + ' h';\n}\n\ndocument.getElementById('sal-niveau').addEventListener('change', e => { salState.niveau = +e.target.value; renderSalaire(); });\ndocument.getElementById('sal-heures').addEventListener('input', e => { salState.heures = +e.target.value; renderSalaire(); });\n\n\u002F\u002F ─── TAB 4: PRIME D'ANCIENNETÉ ───────────────────────────────────────────────\nconst paState = { salaire: 2000, anc: 5, pres: 100 };\n\nfunction computePrimeAnciennete(s) {\n  let pct = 0;\n  if (s.anc >= 15) pct = 15;\n  else if (s.anc >= 12) pct = 12;\n  else if (s.anc >= 9) pct = 9;\n  else if (s.anc >= 6) pct = 6;\n  else if (s.anc >= 3) pct = 3;\n  const baseAnnuelle = s.salaire * 12;\n  const prime = baseAnnuelle * (pct \u002F 100) * (s.pres \u002F 100);\n  return { prime, pct };\n}\n\nfunction renderPrimeAnciennete() {\n  const r = computePrimeAnciennete(paState);\n  if (r.pct === 0) {\n    document.getElementById('pa-amount').textContent = '0 €';\n    document.getElementById('pa-detail').textContent = 'Prime d\\'ancienneté déclenchée à partir de 3 ans d\\'ancienneté.';\n  } else {\n    document.getElementById('pa-amount').textContent = fmt.format(r.prime);\n    document.getElementById('pa-detail').textContent = `${r.pct} % × ${fmt.format(paState.salaire * 12)} × ${paState.pres} % de présence`;\n  }\n  document.getElementById('pa-salaire-val').textContent = fmt.format(paState.salaire);\n  document.getElementById('pa-anc-val').textContent = paState.anc + (paState.anc > 1 ? ' ans' : ' an');\n  document.getElementById('pa-pres-val').textContent = paState.pres + ' %';\n}\n\ndocument.getElementById('pa-salaire').addEventListener('input', e => { paState.salaire = +e.target.value; renderPrimeAnciennete(); });\ndocument.getElementById('pa-anc').addEventListener('input', e => { paState.anc = +e.target.value; renderPrimeAnciennete(); });\ndocument.getElementById('pa-pres').addEventListener('input', e => { paState.pres = +e.target.value; renderPrimeAnciennete(); });\n\n\u002F\u002F ─── TAB 5: CONGÉS ────────────────────────────────────────────────────────\nconst cgState = { anc: 12, mois: 12, soussol: false, frac: 0 };\n\nfunction computeConges(s) {\n  \u002F\u002F Base légale proratisée\n  const base = Math.round(2.5 * s.mois * 10) \u002F 10;\n  const baseClamp = Math.min(base, 30);\n  \u002F\u002F Jours ancienneté\n  let ancDays = 0;\n  if (s.anc >= 25) ancDays = 3;\n  else if (s.anc >= 20) ancDays = 2;\n  else if (s.anc >= 15) ancDays = 1;\n  \u002F\u002F Sous-sol\n  const ssDays = (s.soussol && s.anc >= 1) ? 4 : 0; \u002F\u002F 1 j\u002Ftrimestre = 4\u002Fan\n  \u002F\u002F Fractionnement\n  const fracDays = s.frac;\n  const total = baseClamp + ancDays + ssDays + fracDays;\n  return { total, baseClamp, ancDays, ssDays, fracDays };\n}\n\nfunction renderConges() {\n  const r = computeConges(cgState);\n  document.getElementById('cg-jours').textContent = r.total + ' j ouvrables';\n  const parts = [`Base légale : ${r.baseClamp} j`];\n  if (r.ancDays > 0) parts.push(`ancienneté : +${r.ancDays} j`);\n  if (r.ssDays > 0) parts.push(`sous-sol : +${r.ssDays} j`);\n  if (r.fracDays > 0) parts.push(`fractionnement : +${r.fracDays} j`);\n  document.getElementById('cg-detail').textContent = parts.join(' · ');\n  document.getElementById('cg-anc-val').textContent = cgState.anc + (cgState.anc > 1 ? ' ans' : ' an');\n  document.getElementById('cg-mois-val').textContent = cgState.mois + ' mois';\n}\n\ndocument.getElementById('cg-anc').addEventListener('input', e => { cgState.anc = +e.target.value; renderConges(); });\ndocument.getElementById('cg-mois').addEventListener('input', e => { cgState.mois = +e.target.value; renderConges(); });\ndocument.getElementById('cg-soussol').addEventListener('change', e => { cgState.soussol = e.target.checked; renderConges(); });\ndocument.querySelectorAll('#cg-frac-pills .pill').forEach(p => p.addEventListener('click', () => {\n  document.querySelectorAll('#cg-frac-pills .pill').forEach(x => x.classList.remove('active'));\n  p.classList.add('active');\n  cgState.frac = +p.dataset.val;\n  renderConges();\n}));\n\n\u002F\u002F ─── TAB NAVIGATION ─────────────────────────────────────────────────────────\nconst allTabs = document.querySelectorAll('[data-tab]');\nconst allPanels = document.querySelectorAll('[data-panel]');\n\nfunction activate(id) {\n  allTabs.forEach(t => t.classList.toggle('active', t.dataset.tab === id));\n  allPanels.forEach(p => {\n    const match = p.dataset.panel === id;\n    p.classList.toggle('active', match);\n    p.style.display = match ? 'block' : 'none';\n  });\n  if (location.hash !== '#' + id) location.hash = id;\n  requestAnimationFrame(() => {\n    window.dispatchEvent(new Event('resize'));\n    const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n    parent.postMessage({ type: 'resize', height: h }, '*');\n  });\n}\n\nallTabs.forEach(t => t.addEventListener('click', () => activate(t.dataset.tab)));\n\n\u002F\u002F Initial activation\nconst hashTab = location.hash.slice(1);\nconst validTab = document.querySelector(`[data-tab=\"${hashTab}\"]`);\nactivate(validTab ? hashTab : 'indemnite');\n\n\u002F\u002F Initial renders\nrenderIndemnite();\nrenderPreavis();\nrenderSalaire();\nrenderPrimeAnciennete();\nrenderConges();\n\n\u002F\u002F ─── LUCIDE + RESIZE OBSERVER ────────────────────────────────────────────────\ndocument.addEventListener('DOMContentLoaded', () => { if (window.lucide) lucide.createIcons(); });\nif (window.lucide) lucide.createIcons();\n\nconst ro = new ResizeObserver(() => {\n  const h = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n  parent.postMessage({ type: 'resize', height: h }, '*');\n});\nro.observe(document.documentElement);\n\u003C\u002Fscript>\n\u003C\u002Fbody>\n\u003C\u002Fhtml>\n","generated","juridique","consumer","both","https:\u002F\u002Fpub-bdebbd2dad294475a2da0eb657815b6b.r2.dev\u002Ftools\u002Fccn-employes-et-agents-de-maitrise-des-commerces-de-0882eb481e.webp",[]]