{"id":2143,"date":"2026-06-12T14:52:45","date_gmt":"2026-06-12T14:52:45","guid":{"rendered":"https:\/\/millepiani.com\/sa-8000-2014-ethical-reporting\/"},"modified":"2026-09-10T11:41:34","modified_gmt":"2026-09-10T11:41:34","slug":"sa-8000-2014-ethical-reporting","status":"publish","type":"page","link":"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/","title":{"rendered":"SA 8000-2014 ETHICAL REPORTING"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2143\" class=\"elementor elementor-2143 elementor-1822\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a3dcf0 e-con-full e-flex e-con e-parent\" data-id=\"1a3dcf0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bc73b09 elementor-widget elementor-widget-html\" data-id=\"bc73b09\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Afacad+Flux:wght@100..1000&display=swap\" rel=\"stylesheet\">\r\n\r\n<div class=\"mp-sa-page\" id=\"mpSaPage\">\r\n\r\n  <!-- POPUP PRIVACY -->\r\n  <div class=\"mp-sa-consent-popup\" id=\"mpSaConsentPopup\" aria-modal=\"true\" role=\"dialog\">\r\n    <div class=\"mp-sa-consent-bg\"><\/div>\r\n\r\n    <div class=\"mp-sa-consent-card\" role=\"document\">\r\n      <div class=\"mp-sa-consent-header\">\r\n        <p class=\"mp-sa-kicker\">Privacy Policy<\/p>\r\n\r\n        <h1>\r\n  Before<br\/> proceeding\r\n        <\/h1>\r\n\r\n        <p>\r\n  Please read carefully the information regarding the processing of personal data for the management of reports and complaints concerning SA8000:2014 Social Accountability.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"mp-sa-consent-scroll\">\r\n        <h2>\r\n  Information regarding the processing of personal data pursuant to Art. 13 of European Regulation no. 679\/2016 (\"GDPR\") in relation to the management of SA8000 reports and complaints  \r\n        <\/h2>\r\n\r\n        <p>Good morning,<\/p>\r\n\r\n        <p>\r\n  we hereby wish to provide appropriate information pursuant to Art. 13 of EU Reg. no. 679\/2016 (\"GDPR\") regarding the fundamental elements of the processing carried out on data provided following a report or complaint concerning SA8000:2014 Social Accountability, for the purposes of managing the same.  \r\n        <\/p>\r\n\r\n        <p>\r\n  The personal data collected will be processed according to principles of correctness, lawfulness, transparency, minimization, and protection of confidentiality and the rights of the data subjects.\r\n        <\/p>\r\n\r\n        <p>\r\n  The report may also be submitted anonymously. Should the reporter decide to indicate their name and surname, such data will be processed exclusively for purposes related to the management of the report and will not be disclosed. \r\n        <\/p>\r\n\r\n        <h3>Data collected<\/h3>\r\n\r\n        <p>\r\n  The data collected may include common data of the non-anonymous interested party, such as name and surname, date of the report, as well as data and information relating to the facts subject to the report or complaint.\r\n        <\/p>\r\n\r\n        <p>\r\n  The report could contain, even incidentally, special categories of personal data or data relating to criminal convictions and offenses, if included by the reporter in the description of the event or in the attachments.\r\n        <\/p>\r\n\r\n        <h3>Purpose and legal basis of processing<\/h3>\r\n\r\n        <p>\r\n  The data collected by Gruppo Millepiani S.p.A. will be processed for the receipt, investigation, verification, and management of SA8000 reports or complaints, for the fulfillment of legal and\/or organizational obligations related to the SA8000 Social Accountability Management System, as well as for the establishment, exercise, or defense of a right in court, where necessary.\r\n        <\/p>\r\n\r\n        <p>\r\n  The legal basis for processing is identified, depending on the case, in the fulfillment of legal obligations, in the legitimate interest of the Controller in the prevention and management of non-compliant conduct, and, where applicable, in the consent of the data subject for specific processing methods.\r\n        <\/p>\r\n\r\n        <h3>Duration of processing and data retention<\/h3>\r\n\r\n        <p>\r\n  The data will be kept for the time necessary to manage the report or complaint and any subsequent activities, in compliance with the principles of proportionality and storage limitation, unless further retention is necessary for legal obligations or for the protection of the Company's rights.\r\n        <\/p>\r\n\r\n        <h3>Processing methods<\/h3>\r\n\r\n        <p>\r\n  Processing is carried out using electronic and\/or paper tools, adopting technical and organizational measures suitable for protecting the confidentiality, integrity, and availability of the data.\r\n        <\/p>\r\n\r\n        <p>\r\n  The content of the report and the possible identity of the reporter are managed with criteria of confidentiality and limited access only to subjects authorized by reason of their respective functions.\r\n        <\/p>\r\n\r\n        <h3>Nature of data provision<\/h3>\r\n\r\n        <p>\r\n  The provision of the reporter's identifying data is optional. The provision of information relating to the reported facts is necessary to allow the evaluation and management of the report; incomplete or unsubstantiated information could make the investigation impossible or difficult. \r\n        <\/p>\r\n\r\n        <h3>Categories of subjects who may have access to the data<\/h3>\r\n\r\n        <p>\r\n  The data may be processed by subjects authorized by the Controller and, where necessary, communicated to consultants, professionals, subjects in charge of maintaining IT systems, public or judicial authorities, certification or accreditation bodies, within the limits strictly necessary for the management of the report and applicable obligations.\r\n        <\/p>\r\n\r\n        <p>Personal data will not be disclosed.<\/p>\r\n\r\n        <h3>Rights of the data subject<\/h3>\r\n\r\n        <p>\r\n  The data subject may exercise, within the limits provided by applicable legislation, the rights referred to in Art. 15 et seq. of the GDPR, including access, rectification, erasure, restriction, objection, and portability, as well as lodge a complaint with the Data Protection Authority.\r\n        <\/p>\r\n\r\n        <h3>Data Controller<\/h3>\r\n\r\n        <p>\r\n  The Data Controller is Gruppo Millepiani S.p.A., with registered office in Misinto (MB), Via Della Longura n. 21, VAT no. 02731550121.\r\n        <\/p>\r\n\r\n        <p>\r\n  For further information or to exercise privacy rights, you can write to the address: privacy@millepiani.com.\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"mp-sa-consent-actions\">\r\n        <button type=\"button\" class=\"mp-sa-consent-btn mp-sa-consent-btn-secondary\" id=\"mpSaConsentClose\">\r\n  Close\r\n        <\/button>\r\n\r\n        <div class=\"mp-sa-consent-accept-area\">\r\n          <button type=\"button\" class=\"mp-sa-consent-btn mp-sa-consent-btn-primary\" id=\"mpSaConsentAccept\">\r\n  Accept\r\n          <\/button>\r\n\r\n          <p>\r\n  *I declare that I have read the information regarding the processing of personal data pursuant to Art. 13 of European Regulation no. 679\/2016 (\"GDPR\") in relation to the management of SA8000 reports and complaints.  \r\n          <\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- HERO -->\r\n  <section class=\"mp-sa-hero\">\r\n    <div class=\"mp-sa-hero-bg\"><\/div>\r\n    <div class=\"mp-sa-hero-overlay\"><\/div>\r\n\r\n    <div class=\"mp-sa-hero-content mp-sa-reveal\">\r\n      <p class=\"mp-sa-kicker\">SA8000:2014 Ethical Channel<\/p>\r\n\r\n      <h1>\r\n  SA8000<br\/> Ethical Reporting\r\n      <\/h1>\r\n\r\n      <p>\r\n  Fill out the form to submit a report or complaint regarding SA8000 Social Accountability aspects. You can proceed anonymously or indicate your name and surname. \r\n      <\/p>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- FORM -->\r\n  <section class=\"mp-sa-section\" id=\"modulo-segnalazioni-etica-sa8000\">\r\n    <div class=\"mp-sa-bg\"><\/div>\r\n    <div class=\"mp-sa-grid-bg\"><\/div>\r\n\r\n    <div class=\"mp-sa-inner\">\r\n\r\n      <div class=\"mp-sa-heading mp-sa-reveal\">\r\n        <p>Online form<\/p>\r\n\r\n        <h2>\r\n  SA8000<br\/> Reports and Complaints\r\n        <\/h2>\r\n\r\n        <span>\r\n  The fields follow the structure of the MSR301B model. Fill in the information relating to the area subject to the report and describe the event. The identifying data of the interested party are optional.  \r\n        <\/span>\r\n      <\/div>\r\n\r\n      <form class=\"mp-sa-form mp-sa-reveal\" id=\"mpSaReportForm\" action=\"\/wp-admin\/admin-post.php\" method=\"post\" enctype=\"multipart\/form-data\">\r\n\r\n        <input type=\"hidden\" name=\"action\" value=\"mp_submit_sa8000\">\r\n        <input type=\"hidden\" name=\"privacy_accettata\" id=\"mpSaPrivacyAccepted\" value=\"no\">\r\n\r\n        <!-- CAMPI DI SICUREZZA GENERATI DAL PLUGIN PHP -->\r\n        \r\n\r\n        <!-- HONEYPOT ANTISPAM: deve restare invisibile -->\r\n        <input type=\"text\" name=\"mp_website\" value=\"\" tabindex=\"-1\" autocomplete=\"off\" class=\"mp-sa-honeypot\" aria-hidden=\"true\">\r\n\r\n        <div class=\"mp-sa-form-status\" id=\"mpSaFormStatus\"><\/div>\r\n\r\n        <section class=\"mp-sa-card\">\r\n          <div class=\"mp-sa-card-heading\">\r\n            <span>01<\/span>\r\n            <p>Identifying data of the interested party<\/p>\r\n            <h3>Data of the interested party<\/h3>\r\n            <small>Leave the \"Report issued by\" field blank if you wish to remain anonymous.<\/small>\r\n          <\/div>\r\n\r\n          <div class=\"mp-sa-field mp-sa-field-full\">\r\n            <input type=\"text\" name=\"segnalante\" id=\"segnalante\" placeholder=\"Write here...\" maxlength=\"180\">\r\n            <label for=\"segnalante\">Report issued by \/ Name and surname optional<\/label>\r\n          <\/div>\r\n\r\n          <div class=\"mp-sa-field mp-sa-field-full\">\r\n            <input type=\"date\" name=\"data_segnalazione\" id=\"data_segnalazione\" placeholder=\"Write here...\">\r\n            <label for=\"data_segnalazione\">Date<\/label>\r\n          <\/div>\r\n        <\/section>\r\n\r\n        <section class=\"mp-sa-card\">\r\n          <div class=\"mp-sa-card-heading\">\r\n            <span>02<\/span>\r\n            <p>Area subject to the report<\/p>\r\n            <h3>Area subject to the report<\/h3>\r\n            <small>Select one or more areas relevant to the SA8000 report or complaint.<\/small>\r\n          <\/div>\r\n\r\n          <div class=\"mp-sa-check-grid\">\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"lavoro_minorile\">\r\n              <span>Child \/ underage labor<\/span>\r\n            <\/label>\r\n\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"liberta_associazione_contrattazione\">\r\n              <span>Freedom of association - right to collective bargaining<\/span>\r\n            <\/label>\r\n\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"salute_sicurezza\">\r\n              <span>Health and safety<\/span>\r\n            <\/label>\r\n\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"orario_lavoro\">\r\n              <span>Working hours<\/span>\r\n            <\/label>\r\n\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"lavoro_forzato\">\r\n              <span>Forced or compulsory labor<\/span>\r\n            <\/label>\r\n\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"retribuzione\">\r\n              <span>Remuneration<\/span>\r\n            <\/label>\r\n\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"discriminazione\">\r\n              <span>Discrimination<\/span>\r\n            <\/label>\r\n\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"pratiche_disciplinari\">\r\n              <span>Disciplinary procedures<\/span>\r\n            <\/label>\r\n\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"sistema_gestione\">\r\n              <span>Management system<\/span>\r\n            <\/label>\r\n\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"fornitori\">\r\n              <span>Suppliers<\/span>\r\n            <\/label>\r\n\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"reclamo_generale\">\r\n              <span>General complaint<\/span>\r\n            <\/label>\r\n\r\n            <label>\r\n              <input type=\"checkbox\" name=\"area_segnalazione[]\" value=\"altro\">\r\n              <span>Other<\/span>\r\n            <\/label>\r\n          <\/div>\r\n        <\/section>\r\n\r\n        <section class=\"mp-sa-card\">\r\n          <div class=\"mp-sa-card-heading\">\r\n            <span>03<\/span>\r\n            <p>Event description<\/p>\r\n            <h3>Event description<\/h3>\r\n            <small>Describe the complaint or report in a clear and detailed manner, indicating every element useful for verification.<\/small>\r\n          <\/div>\r\n\r\n          <div class=\"mp-sa-field mp-sa-field-full\">\r\n            <textarea name=\"descrizione_evento\" id=\"descrizione_evento\" placeholder=\"Write here...\" minlength=\"20\" maxlength=\"8000\" required=\"\"><\/textarea>\r\n            <label for=\"descrizione_evento\">Event description *<\/label>\r\n          <\/div>\r\n        <\/section>\r\n\r\n        <section class=\"mp-sa-card\">\r\n          <div class=\"mp-sa-card-heading\">\r\n            <span>04<\/span>\r\n            <p>Documentation<\/p>\r\n            <h3>Any attachments<\/h3>\r\n            <small>Upload only documents useful for verifying the facts. Avoid unnecessary personal data. <\/small>\r\n          <\/div>\r\n\r\n          <div class=\"mp-sa-upload-field\">\r\n            <p>Attachments to the report<\/p>\r\n\r\n            <label class=\"mp-sa-upload-box\" for=\"documenti_segnalazione\">\r\n              <input type=\"file\" id=\"documenti_segnalazione\" name=\"documenti_segnalazione[]\" multiple accept=\".pdf,.jpg,.jpeg,.png,.txt,.docx,.xlsx\">\r\n\r\n              <span class=\"mp-sa-upload-icon\">+<\/span>\r\n              <span class=\"mp-sa-upload-text\">Select file<\/span>\r\n              <span class=\"mp-sa-upload-note\">Maximum 3 files, 8 MB each. PDF, images, TXT, DOCX, XLSX.<\/span>\r\n              <span class=\"mp-sa-upload-filename\" data-file-label=\"documenti_segnalazione\"><\/span>\r\n            <\/label>\r\n          <\/div>\r\n        <\/section>\r\n\r\n        <section class=\"mp-sa-card\">\r\n          <div class=\"mp-sa-card-heading\">\r\n            <span>05<\/span>\r\n            <p>Instructions for completion<\/p>\r\n            <h3>Submission methods<\/h3>\r\n            <small>\r\n  The collaboration of employees and other interested parties is important to ensure the effective functioning of the SA8000 Social Accountability Management System.\r\n            <\/small>\r\n          <\/div>\r\n\r\n          <div class=\"mp-sa-info-list\">\r\n            <p>The complaint or report can be submitted:<\/p>\r\n\r\n            <ul>\r\n              <li>via e-mail to the address <strong>segnalazioni.sa8000@millepiani.com<\/strong>;<\/li>\r\n              <li>through boxes dedicated to receiving complaints, reports, or suggestions present in the company;<\/li>\r\n              <li>directly to the SA8000 Workers' Representative.<\/li>\r\n            <\/ul>\r\n\r\n            <p>\r\n  Workers and interested parties also have the right to contact the Certification Body or the SAAS Accreditation Body directly.\r\n            <\/p>\r\n          <\/div>\r\n        <\/section>\r\n\r\n        <div class=\"mp-sa-submit-area\">\r\n          <button type=\"submit\" class=\"mp-sa-submit-btn\">\r\n  Send SA8000 report\r\n          <\/button>\r\n\r\n          <p>\r\n  The report will be sent to segnalazioni.sa8000@millepiani.com.\r\n          <\/p>\r\n        <\/div>\r\n\r\n      <\/form>\r\n    <\/div>\r\n  <\/section>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d99bea6 elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile elementor-widget elementor-widget-shortcode\" data-id=\"d99bea6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><script>\/* Caricato automaticamente dal plugin. Sostituisce il precedente JavaScript. *\/\r\n\r\n(function () {\r\n  \"use strict\";\r\n\r\n  function init() {\r\n    const page = document.getElementById(\"mpSaPage\");\r\n    const form = document.getElementById(\"mpSaReportForm\");\r\n\r\n    if (\r\n      !page ||\r\n      !form ||\r\n      form.dataset.mpSaInitialized === \"1\"\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    form.dataset.mpSaInitialized = \"1\";\r\n    document.documentElement.classList.add(\"mp-sa-js-ready\");\r\n\r\n    const config = window.MPSA8000Config;\r\n    const popup = document.getElementById(\"mpSaConsentPopup\");\r\n    const acceptedField = document.getElementById(\"mpSaPrivacyAccepted\");\r\n    const accept = document.getElementById(\"mpSaConsentAccept\");\r\n    const close = document.getElementById(\"mpSaConsentClose\");\r\n    const submit = form.querySelector('button[type=\"submit\"]');\r\n\r\n    let status = document.getElementById(\"mpSaFormStatus\");\r\n\r\n    if (!status) {\r\n      status = document.createElement(\"div\");\r\n      status.id = \"mpSaFormStatus\";\r\n      form.prepend(status);\r\n    }\r\n\r\n    status.setAttribute(\"role\", \"status\");\r\n    status.setAttribute(\"aria-live\", \"polite\");\r\n    status.setAttribute(\"aria-atomic\", \"true\");\r\n    status.tabIndex = -1;\r\n\r\n    let token = null;\r\n    let preparing = null;\r\n    let busy = false;\r\n    let completed = false;\r\n    let pending = null;\r\n    let blocked = false;\r\n    let originalDisabled = null;\r\n\r\n    const reducedMotion = window.matchMedia(\r\n      \"(prefers-reduced-motion: reduce)\"\r\n    ).matches;\r\n\r\n    const behavior = reducedMotion ? \"auto\" : \"smooth\";\r\n    const normalLabel = \"Invia segnalazione SA8000\";\r\n\r\n    \/*\r\n     * Rimuove il vecchio segnaposto se \u00e8 ancora presente.\r\n     * Non modifica i dati compilati.\r\n     *\/\r\n    const walker = document.createTreeWalker(\r\n      form,\r\n      NodeFilter.SHOW_TEXT\r\n    );\r\n\r\n    const placeholders = [];\r\n\r\n    while (walker.nextNode()) {\r\n      if (\r\n        walker.currentNode.nodeValue.includes(\r\n          \"\"\r\n        )\r\n      ) {\r\n        placeholders.push(walker.currentNode);\r\n      }\r\n    }\r\n\r\n    placeholders.forEach(function (node) {\r\n      node.nodeValue = node.nodeValue\r\n        .split(\"\")\r\n        .join(\"\");\r\n    });\r\n\r\n    function show(message, type, focus) {\r\n      status.textContent = message;\r\n\r\n      status.classList.remove(\r\n        \"is-success\",\r\n        \"is-error\"\r\n      );\r\n\r\n      status.classList.add(\"is-visible\");\r\n\r\n      if (type === \"success\") {\r\n        status.classList.add(\"is-success\");\r\n      }\r\n\r\n      if (type === \"error\") {\r\n        status.classList.add(\"is-error\");\r\n      }\r\n\r\n      status.style.display = \"block\";\r\n      status.style.opacity = \"1\";\r\n      status.style.visibility = \"visible\";\r\n\r\n      if (focus) {\r\n        status.focus({\r\n          preventScroll: true\r\n        });\r\n\r\n        status.scrollIntoView({\r\n          behavior: behavior,\r\n          block: \"center\"\r\n        });\r\n      }\r\n    }\r\n\r\n    function releaseContainers() {\r\n      let parent = page;\r\n\r\n      while (\r\n        parent &&\r\n        parent !== document.body &&\r\n        parent !== document.documentElement\r\n      ) {\r\n        parent.style.height = \"auto\";\r\n        parent.style.minHeight = parent === page\r\n          ? \"100%\"\r\n          : \"0\";\r\n        parent.style.maxHeight = \"none\";\r\n        parent.style.overflow = \"visible\";\r\n\r\n        parent = parent.parentElement;\r\n      }\r\n    }\r\n\r\n    releaseContainers();\r\n\r\n    window.addEventListener(\r\n      \"load\",\r\n      releaseContainers,\r\n      { once: true }\r\n    );\r\n\r\n    \/*\r\n     * Reveal animation con visualizzazione di sicurezza.\r\n     *\/\r\n    const revealItems = page.querySelectorAll(\r\n      \".mp-sa-reveal\"\r\n    );\r\n\r\n    if (\r\n      !reducedMotion &&\r\n      \"IntersectionObserver\" in window\r\n    ) {\r\n      const observer = new IntersectionObserver(\r\n        function (entries) {\r\n          entries.forEach(function (entry) {\r\n            if (entry.isIntersecting) {\r\n              entry.target.classList.add(\"is-visible\");\r\n              observer.unobserve(entry.target);\r\n            }\r\n          });\r\n        },\r\n        {\r\n          threshold: 0.1,\r\n          rootMargin: \"0px 0px -8% 0px\"\r\n        }\r\n      );\r\n\r\n      revealItems.forEach(function (item) {\r\n        observer.observe(item);\r\n      });\r\n\r\n      window.setTimeout(function () {\r\n        revealItems.forEach(function (item) {\r\n          item.classList.add(\"is-visible\");\r\n        });\r\n\r\n        observer.disconnect();\r\n      }, 1200);\r\n    } else {\r\n      revealItems.forEach(function (item) {\r\n        item.classList.add(\"is-visible\");\r\n      });\r\n    }\r\n\r\n    \/*\r\n     * Scorrimento interno.\r\n     *\/\r\n    page.querySelectorAll('a[href^=\"#\"]').forEach(\r\n      function (anchor) {\r\n        anchor.addEventListener(\"click\", function (event) {\r\n          const id = anchor.getAttribute(\"href\").slice(1);\r\n\r\n          if (!id) return;\r\n\r\n          let decoded;\r\n\r\n          try {\r\n            decoded = decodeURIComponent(id);\r\n          } catch (_) {\r\n            return;\r\n          }\r\n\r\n          const target = document.getElementById(decoded);\r\n\r\n          if (!target) return;\r\n\r\n          event.preventDefault();\r\n\r\n          target.scrollIntoView({\r\n            behavior: behavior,\r\n            block: \"start\"\r\n          });\r\n        });\r\n      }\r\n    );\r\n\r\n    \/*\r\n     * Stato dei campi.\r\n     *\/\r\n    const fields = form.querySelectorAll(\r\n      \".mp-sa-field input, .mp-sa-field textarea\"\r\n    );\r\n\r\n    function updateField(field) {\r\n      const wrapper = field.closest(\".mp-sa-field\");\r\n\r\n      if (wrapper) {\r\n        wrapper.classList.toggle(\r\n          \"is-filled\",\r\n          field.value.trim() !== \"\"\r\n        );\r\n      }\r\n    }\r\n\r\n    fields.forEach(function (field) {\r\n      updateField(field);\r\n\r\n      field.addEventListener(\"input\", function () {\r\n        updateField(field);\r\n      });\r\n\r\n      field.addEventListener(\"change\", function () {\r\n        updateField(field);\r\n      });\r\n    });\r\n\r\n    \/*\r\n     * Gli indirizzi devono appartenere allo stesso sito.\r\n     *\/\r\n    function safeUrl(value) {\r\n      const url = new URL(value, window.location.href);\r\n\r\n      if (\r\n        url.origin !== window.location.origin ||\r\n        !\/^https?:$\/.test(url.protocol)\r\n      ) {\r\n        throw new Error(\r\n          \"Configurazione degli indirizzi del modulo non valida.\"\r\n        );\r\n      }\r\n\r\n      return url.href;\r\n    }\r\n\r\n    let endpoint;\r\n    let home;\r\n    let closeUrl;\r\n\r\n    try {\r\n      if (!config || !submit) {\r\n        throw new Error(\r\n          \"Configurazione del modulo assente.\"\r\n        );\r\n      }\r\n\r\n      endpoint = safeUrl(config.endpoint);\r\n      home = safeUrl(config.home);\r\n      closeUrl = safeUrl(config.close);\r\n    } catch (_) {\r\n      if (submit) {\r\n        submit.disabled = true;\r\n      }\r\n\r\n      show(\r\n        \"Modulo non disponibile: controllare che il plugin Millepiani SA8000 sia attivo e svuotare la cache della pagina.\",\r\n        \"error\",\r\n        false\r\n      );\r\n\r\n      return;\r\n    }\r\n\r\n    \/*\r\n     * Popup privacy.\r\n     *\/\r\n    if (close) {\r\n      close.addEventListener(\"click\", function () {\r\n        window.location.assign(closeUrl);\r\n      });\r\n    }\r\n\r\n    if (accept) {\r\n      accept.addEventListener(\"click\", function () {\r\n        if (acceptedField) {\r\n          acceptedField.value = \"si\";\r\n        }\r\n\r\n        if (popup) {\r\n          popup.classList.add(\"is-hidden\");\r\n          popup.hidden = true;\r\n          popup.style.display = \"none\";\r\n        }\r\n\r\n        releaseContainers();\r\n\r\n        const section = document.getElementById(\r\n          \"modulo-segnalazioni-etica-sa8000\"\r\n        );\r\n\r\n        if (section) {\r\n          section.scrollIntoView({\r\n            behavior: behavior,\r\n            block: \"start\"\r\n          });\r\n        }\r\n      });\r\n    }\r\n\r\n    \/*\r\n     * Verifica allegati lato browser.\r\n     * Il server ripete autonomamente tutti i controlli.\r\n     *\/\r\n    const fileInputs = form.querySelectorAll(\r\n      'input[type=\"file\"]'\r\n    );\r\n\r\n    function fileError() {\r\n      const files = Array.from(fileInputs).flatMap(\r\n        function (input) {\r\n          return Array.from(input.files || []);\r\n        }\r\n      );\r\n\r\n      if (files.length > 3) {\r\n        return \"Puoi caricare massimo 3 file.\";\r\n      }\r\n\r\n      let total = 0;\r\n\r\n      for (const file of files) {\r\n        total += file.size;\r\n\r\n        if (file.size === 0) {\r\n          return \"Uno degli allegati \u00e8 vuoto.\";\r\n        }\r\n\r\n        if (file.size > 8 * 1024 * 1024) {\r\n          return \"Un allegato supera il limite di 8 MB.\";\r\n        }\r\n\r\n        if (\r\n          !\/\\.(pdf|jpe?g|png|txt|docx|xlsx)$\/i.test(\r\n            file.name\r\n          )\r\n        ) {\r\n          return \"Formato non consentito. Usa PDF, JPG, PNG, TXT, DOCX o XLSX.\";\r\n        }\r\n      }\r\n\r\n      return total > 16 * 1024 * 1024\r\n        ? \"Gli allegati superano il limite complessivo di 16 MB.\"\r\n        : \"\";\r\n    }\r\n\r\n    fileInputs.forEach(function (input) {\r\n      input.addEventListener(\"change\", function () {\r\n        const label = Array.from(\r\n          form.querySelectorAll(\"[data-file-label]\")\r\n        ).find(function (item) {\r\n          return item.getAttribute(\"data-file-label\")\r\n            === input.id;\r\n        });\r\n\r\n        const error = fileError();\r\n\r\n        if (error) {\r\n          input.value = \"\";\r\n\r\n          if (label) {\r\n            label.textContent = \"\";\r\n          }\r\n\r\n          show(error, \"error\", true);\r\n        } else if (label) {\r\n          label.textContent = Array.from(\r\n            input.files || []\r\n          ).map(function (file) {\r\n            return file.name;\r\n          }).join(\", \");\r\n        }\r\n      });\r\n    });\r\n\r\n    \/*\r\n     * Richieste AJAX.\r\n     *\/\r\n    async function request(body, timeout) {\r\n      const controller = new AbortController();\r\n\r\n      const timer = window.setTimeout(function () {\r\n        controller.abort();\r\n      }, timeout);\r\n\r\n      try {\r\n        const response = await fetch(endpoint, {\r\n          method: \"POST\",\r\n          body: body,\r\n          credentials: \"same-origin\",\r\n          cache: \"no-store\",\r\n          redirect: \"error\",\r\n          signal: controller.signal\r\n        });\r\n\r\n        const data = await response.json();\r\n\r\n        if (\r\n          !data ||\r\n          typeof data.success !== \"boolean\" ||\r\n          !data.data ||\r\n          typeof data.data !== \"object\" ||\r\n          (data.success && !response.ok)\r\n        ) {\r\n          throw new Error(\r\n            \"Risposta del server non riconosciuta.\"\r\n          );\r\n        }\r\n\r\n        return data;\r\n      } finally {\r\n        window.clearTimeout(timer);\r\n      }\r\n    }\r\n\r\n    const retry = document.createElement(\"button\");\r\n\r\n    retry.type = \"button\";\r\n    retry.className =\r\n      \"mp-sa-consent-btn mp-sa-consent-btn-secondary\";\r\n    retry.textContent = \"Riprova caricamento modulo\";\r\n    retry.hidden = true;\r\n\r\n    status.insertAdjacentElement(\"afterend\", retry);\r\n\r\n    \/*\r\n     * I token vengono richiesti al server:\r\n     * non dipendono da shortcode o cache della pagina.\r\n     *\/\r\n    async function prepare() {\r\n      if (preparing) {\r\n        return preparing;\r\n      }\r\n\r\n      preparing = (async function () {\r\n        retry.hidden = true;\r\n\r\n        const body = new URLSearchParams({\r\n          action: \"mp_sa8000_prepare\"\r\n        });\r\n\r\n        const result = await request(body, 20000);\r\n\r\n        if (!result.success) {\r\n          throw new Error(\r\n            result.data.message || \"Modulo non disponibile.\"\r\n          );\r\n        }\r\n\r\n        const data = result.data;\r\n\r\n        if (\r\n          !\/^[a-f0-9]{32}$\/.test(data.submission_id) ||\r\n          !\/^[a-f0-9]{64}$\/.test(data.signature) ||\r\n          !\/^[0-9]{1,10}$\/.test(String(data.started)) ||\r\n          typeof data.nonce !== \"string\" ||\r\n          !Number.isFinite(data.expires_in) ||\r\n          data.expires_in < 10\r\n        ) {\r\n          throw new Error(\r\n            \"Campi di sicurezza non validi.\"\r\n          );\r\n        }\r\n\r\n        token = Object.assign({}, data, {\r\n          received: Date.now()\r\n        });\r\n\r\n        if (!busy && !pending && !completed) {\r\n          submit.disabled = false;\r\n          submit.textContent = normalLabel;\r\n\r\n          show(\r\n            \"Modulo pronto per l\u2019invio.\",\r\n            \"neutral\",\r\n            false\r\n          );\r\n        }\r\n      })().finally(function () {\r\n        preparing = null;\r\n      });\r\n\r\n      return preparing;\r\n    }\r\n\r\n    function prepareFailed() {\r\n      submit.disabled = true;\r\n      retry.hidden = false;\r\n\r\n      show(\r\n        \"Impossibile preparare il modulo. Riprova il caricamento. Se il problema persiste, il gestore deve verificare il plugin e l\u2019accesso ad admin-ajax.php.\",\r\n        \"error\",\r\n        false\r\n      );\r\n    }\r\n\r\n    retry.addEventListener(\"click\", function () {\r\n      prepare().catch(prepareFailed);\r\n    });\r\n\r\n    \/*\r\n     * Blocca i campi durante l'invio e durante\r\n     * la verifica di un esito incerto.\r\n     *\/\r\n    function freeze() {\r\n      if (!originalDisabled) {\r\n        originalDisabled = Array.from(\r\n          form.elements\r\n        ).map(function (element) {\r\n          return [\r\n            element,\r\n            element.disabled\r\n          ];\r\n        });\r\n      }\r\n\r\n      originalDisabled.forEach(function (entry) {\r\n        entry[0].disabled = true;\r\n      });\r\n\r\n      submit.disabled = busy || completed || blocked;\r\n    }\r\n\r\n    function unfreeze() {\r\n      if (originalDisabled) {\r\n        originalDisabled.forEach(function (entry) {\r\n          entry[0].disabled = entry[1];\r\n        });\r\n      }\r\n\r\n      originalDisabled = null;\r\n    }\r\n\r\n    \/*\r\n     * Invio del modulo.\r\n     *\/\r\n    form.addEventListener(\r\n      \"submit\",\r\n      async function (event) {\r\n        \/*\r\n         * Impedisce sempre la navigazione nativa.\r\n         *\/\r\n        event.preventDefault();\r\n\r\n        if (busy || completed || blocked) {\r\n          return;\r\n        }\r\n\r\n        if (!pending) {\r\n          if (\r\n            !acceptedField ||\r\n            acceptedField.value !== \"si\"\r\n          ) {\r\n            show(\r\n              \"Prima di inviare devi prendere visione dell\u2019informativa privacy.\",\r\n              \"error\",\r\n              true\r\n            );\r\n\r\n            if (popup) {\r\n              popup.hidden = false;\r\n              popup.style.display = \"\";\r\n              popup.classList.remove(\"is-hidden\");\r\n            }\r\n\r\n            return;\r\n          }\r\n\r\n          if (!form.reportValidity()) {\r\n            return;\r\n          }\r\n\r\n          if (\r\n            !form.querySelector(\r\n              'input[name=\"area_segnalazione[]\"]:checked'\r\n            )\r\n          ) {\r\n            show(\r\n              \"Seleziona almeno un\u2019area oggetto della segnalazione.\",\r\n              \"error\",\r\n              true\r\n            );\r\n\r\n            return;\r\n          }\r\n\r\n          const description = document.getElementById(\r\n            \"descrizione_evento\"\r\n          );\r\n\r\n          if (\r\n            !description ||\r\n            description.value.trim().length < 20 ||\r\n            description.value.trim().length > 8000\r\n          ) {\r\n            show(\r\n              \"La descrizione deve contenere da 20 a 8000 caratteri.\",\r\n              \"error\",\r\n              true\r\n            );\r\n\r\n            return;\r\n          }\r\n\r\n          const error = fileError();\r\n\r\n          if (error) {\r\n            show(error, \"error\", true);\r\n            return;\r\n          }\r\n        }\r\n\r\n        busy = true;\r\n        submit.disabled = true;\r\n\r\n        submit.textContent = pending\r\n          ? \"Verifica esito in corso\u2026\"\r\n          : \"Invio in corso\u2026\";\r\n\r\n        form.setAttribute(\"aria-busy\", \"true\");\r\n\r\n        show(\r\n          \"Invio della segnalazione SA8000 in corso. Attendi la conferma.\",\r\n          \"neutral\",\r\n          true\r\n        );\r\n\r\n        let attempted = false;\r\n\r\n        try {\r\n          if (!pending) {\r\n            if (\r\n              !token ||\r\n              Date.now() - token.received >\r\n                (token.expires_in - 10) * 1000\r\n            ) {\r\n              await prepare();\r\n            }\r\n\r\n            \/*\r\n             * Il server verifica anche il tempo minimo\r\n             * usando il timestamp firmato.\r\n             *\/\r\n            const wait = Math.max(\r\n              0,\r\n              3500 - (Date.now() - token.received)\r\n            );\r\n\r\n            if (wait) {\r\n              await new Promise(function (resolve) {\r\n                window.setTimeout(resolve, wait);\r\n              });\r\n            }\r\n\r\n            pending = new FormData(form);\r\n\r\n            pending.set(\r\n              \"action\",\r\n              \"mp_sa8000_submit\"\r\n            );\r\n\r\n            pending.set(\r\n              \"mp_sa8000_nonce\",\r\n              token.nonce\r\n            );\r\n\r\n            pending.set(\r\n              \"mp_form_started\",\r\n              token.started\r\n            );\r\n\r\n            pending.set(\r\n              \"mp_form_signature\",\r\n              token.signature\r\n            );\r\n\r\n            pending.set(\r\n              \"mp_submission_id\",\r\n              token.submission_id\r\n            );\r\n          }\r\n\r\n          freeze();\r\n\r\n          attempted = true;\r\n\r\n          const result = await request(\r\n            pending,\r\n            120000\r\n          );\r\n\r\n          if (!result.success) {\r\n            const code = result.data.code;\r\n\r\n            if (code === \"invio_in_corso\") {\r\n              pendingWasUncertain = true;\r\n\r\n              show(\r\n                result.data.message,\r\n                \"neutral\",\r\n                true\r\n              );\r\n\r\n              submit.textContent = \"Verifica esito invio\";\r\n\r\n              return;\r\n            }\r\n\r\n            if (\r\n              code === \"esito_da_verificare\" ||\r\n              code === \"token_scaduto\" ||\r\n              code === \"token_non_valido\"\r\n            ) {\r\n              \/*\r\n               * Dopo una risposta persa non viene generato\r\n               * automaticamente un nuovo invio.\r\n               *\/\r\n              if (\r\n                code === \"esito_da_verificare\" ||\r\n                pendingWasUncertain\r\n              ) {\r\n                blocked = true;\r\n\r\n                show(\r\n                  \"Non \u00e8 stato possibile confermare l\u2019esito. Per evitare duplicati, non ripetere l\u2019invio: contatta il gestore del sito.\",\r\n                  \"error\",\r\n                  true\r\n                );\r\n\r\n                submit.textContent = \"Esito da verificare\";\r\n\r\n                return;\r\n              }\r\n\r\n              token = null;\r\n            }\r\n\r\n            pending = null;\r\n            pendingWasUncertain = false;\r\n\r\n            unfreeze();\r\n\r\n            show(\r\n              result.data.message ||\r\n                \"Invio non riuscito. I dati sono ancora nel modulo.\",\r\n              \"error\",\r\n              true\r\n            );\r\n\r\n            submit.textContent = normalLabel;\r\n\r\n            return;\r\n          }\r\n\r\n          if (result.data.state !== \"sent\") {\r\n            throw new Error(\r\n              \"Conferma invio non riconosciuta.\"\r\n            );\r\n          }\r\n\r\n          completed = true;\r\n          pending = null;\r\n          token = null;\r\n\r\n          form.reset();\r\n\r\n          fields.forEach(updateField);\r\n\r\n          form.querySelectorAll(\r\n            \"[data-file-label]\"\r\n          ).forEach(function (label) {\r\n            label.textContent = \"\";\r\n          });\r\n\r\n          submit.textContent = \"Segnalazione inoltrata\";\r\n\r\n          show(\r\n            \"La segnalazione SA8000 \u00e8 stata inoltrata con successo. Tra 5 secondi verrai reindirizzato alla homepage.\",\r\n            \"success\",\r\n            true\r\n          );\r\n\r\n          const link = document.createElement(\"a\");\r\n\r\n          link.href = home;\r\n          link.textContent = \"Vai subito alla homepage\";\r\n\r\n          status.append(\r\n            document.createElement(\"br\"),\r\n            link\r\n          );\r\n\r\n          \/*\r\n           * Il redirect parte esclusivamente dopo\r\n           * la conferma positiva del server.\r\n           *\/\r\n          window.setTimeout(function () {\r\n            window.location.replace(home);\r\n          }, 5000);\r\n        } catch (_) {\r\n          if (attempted) {\r\n            pendingWasUncertain = true;\r\n\r\n            show(\r\n              \"La risposta del server non \u00e8 arrivata o non \u00e8 valida. L\u2019esito dell\u2019invio non \u00e8 confermato. Premi Verifica esito: verr\u00e0 riutilizzato lo stesso identificativo per evitare duplicati.\",\r\n              \"error\",\r\n              true\r\n            );\r\n\r\n            submit.textContent = \"Verifica esito invio\";\r\n          } else {\r\n            show(\r\n              \"Impossibile preparare i campi di sicurezza. I dati sono ancora nel modulo; riprova.\",\r\n              \"error\",\r\n              true\r\n            );\r\n\r\n            submit.textContent = normalLabel;\r\n          }\r\n        } finally {\r\n          busy = false;\r\n\r\n          form.removeAttribute(\"aria-busy\");\r\n\r\n          submit.disabled = completed || blocked;\r\n        }\r\n      }\r\n    );\r\n\r\n    let pendingWasUncertain = false;\r\n\r\n    \/*\r\n     * Preparazione iniziale.\r\n     *\/\r\n    submit.disabled = true;\r\n    submit.textContent = \"Preparazione modulo\u2026\";\r\n\r\n    prepare().catch(prepareFailed);\r\n  }\r\n\r\n  if (document.readyState === \"loading\") {\r\n    document.addEventListener(\r\n      \"DOMContentLoaded\",\r\n      init,\r\n      { once: true }\r\n    );\r\n  } else {\r\n    init();\r\n  }\r\n})();<\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Privacy Policy Before proceeding Please read carefully the information regarding the processing of personal data for the management of reports and complaints concerning SA8000:2014 Social Accountability. Information regarding the processing of personal data pursuant to Art. 13 of European Regulation no. 679\/2016 (&#8220;GDPR&#8221;) in relation to the management of SA8000 reports and complaints Good morning, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-2143","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"Submit a report or complaint regarding SA8000 social accountability through the Gruppo Millepiani confidential form.\" \/>\n\t<meta name=\"robots\" content=\"noindex, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"millepiani.com -\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"SA8000 Reports and Complaints | Millepiani\" \/>\n\t\t<meta property=\"og:description\" content=\"Submit a report or complaint regarding SA8000 social accountability through the Gruppo Millepiani confidential form.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-06-12T14:52:45+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-09-10T11:41:34+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"SA8000 Reports and Complaints | Millepiani\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Submit a report or complaint regarding SA8000 social accountability through the Gruppo Millepiani confidential form.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/millepiani.com\\\/en\\\/sa-8000-2014-ethical-reporting\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/millepiani.com\\\/en\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/millepiani.com\\\/en\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/millepiani.com\\\/en\\\/sa-8000-2014-ethical-reporting\\\/#listItem\",\"name\":\"SA 8000-2014 ETHICAL REPORTING\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/millepiani.com\\\/en\\\/sa-8000-2014-ethical-reporting\\\/#listItem\",\"position\":2,\"name\":\"SA 8000-2014 ETHICAL REPORTING\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/millepiani.com\\\/en\\\/#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/millepiani.com\\\/en\\\/#organization\",\"name\":\"millepiani.com\",\"url\":\"https:\\\/\\\/millepiani.com\\\/en\\\/\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/millepiani.com\\\/en\\\/sa-8000-2014-ethical-reporting\\\/#webpage\",\"url\":\"https:\\\/\\\/millepiani.com\\\/en\\\/sa-8000-2014-ethical-reporting\\\/\",\"name\":\"SA8000 Reports and Complaints | Millepiani\",\"description\":\"Submit a report or complaint regarding SA8000 social accountability through the Gruppo Millepiani confidential form.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/millepiani.com\\\/en\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/millepiani.com\\\/en\\\/sa-8000-2014-ethical-reporting\\\/#breadcrumblist\"},\"datePublished\":\"2026-06-12T14:52:45+00:00\",\"dateModified\":\"2026-09-10T11:41:34+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/millepiani.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/millepiani.com\\\/en\\\/\",\"name\":\"millepiani.com\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/millepiani.com\\\/en\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"SA8000 Reports and Complaints | Millepiani","description":"Submit a report or complaint regarding SA8000 social accountability through the Gruppo Millepiani confidential form.","canonical_url":"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/","robots":"noindex, max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/millepiani.com\/en\/#listItem","position":1,"name":"Home","item":"https:\/\/millepiani.com\/en\/","nextItem":{"@type":"ListItem","@id":"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/#listItem","name":"SA 8000-2014 ETHICAL REPORTING"}},{"@type":"ListItem","@id":"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/#listItem","position":2,"name":"SA 8000-2014 ETHICAL REPORTING","previousItem":{"@type":"ListItem","@id":"https:\/\/millepiani.com\/en\/#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/millepiani.com\/en\/#organization","name":"millepiani.com","url":"https:\/\/millepiani.com\/en\/"},{"@type":"WebPage","@id":"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/#webpage","url":"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/","name":"SA8000 Reports and Complaints | Millepiani","description":"Submit a report or complaint regarding SA8000 social accountability through the Gruppo Millepiani confidential form.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/millepiani.com\/en\/#website"},"breadcrumb":{"@id":"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/#breadcrumblist"},"datePublished":"2026-06-12T14:52:45+00:00","dateModified":"2026-09-10T11:41:34+00:00"},{"@type":"WebSite","@id":"https:\/\/millepiani.com\/en\/#website","url":"https:\/\/millepiani.com\/en\/","name":"millepiani.com","inLanguage":"en-US","publisher":{"@id":"https:\/\/millepiani.com\/en\/#organization"}}]},"og:locale":"en_US","og:site_name":"millepiani.com -","og:type":"article","og:title":"SA8000 Reports and Complaints | Millepiani","og:description":"Submit a report or complaint regarding SA8000 social accountability through the Gruppo Millepiani confidential form.","og:url":"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/","article:published_time":"2026-06-12T14:52:45+00:00","article:modified_time":"2026-09-10T11:41:34+00:00","twitter:card":"summary_large_image","twitter:title":"SA8000 Reports and Complaints | Millepiani","twitter:description":"Submit a report or complaint regarding SA8000 social accountability through the Gruppo Millepiani confidential form."},"aioseo_meta_data":{"post_id":"2143","title":"SA8000 Reports and Complaints | Millepiani","description":"Submit a report or complaint regarding SA8000 social accountability through the Gruppo Millepiani confidential form.","keywords":null,"keyphrases":{"focus":{"keyphrase":"segnalazioni SA8000 Millepiani","score":0,"analysis":[]},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":false,"robots_noindex":true,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-09-10 11:41:33","updated":"2026-09-10 11:42:16","focus_keyword":"segnalazioni SA8000 Millepiani","additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/millepiani.com\/en\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tSA 8000-2014 ETHICAL REPORTING\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/millepiani.com\/en\/"},{"label":"SA 8000-2014 ETHICAL REPORTING","link":"https:\/\/millepiani.com\/en\/sa-8000-2014-ethical-reporting\/"}],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/millepiani.com\/en\/wp-json\/wp\/v2\/pages\/2143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/millepiani.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/millepiani.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/millepiani.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/millepiani.com\/en\/wp-json\/wp\/v2\/comments?post=2143"}],"version-history":[{"count":1,"href":"https:\/\/millepiani.com\/en\/wp-json\/wp\/v2\/pages\/2143\/revisions"}],"predecessor-version":[{"id":2144,"href":"https:\/\/millepiani.com\/en\/wp-json\/wp\/v2\/pages\/2143\/revisions\/2144"}],"wp:attachment":[{"href":"https:\/\/millepiani.com\/en\/wp-json\/wp\/v2\/media?parent=2143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}