[FIX] Import fornitori: valida scope org di category_id + allinea header migrazioni 032/033

- bulkUpsertSuppliers: il ramo category_id esplicito (import API/CSV) ora verifica
  che la categoria sia un preset (org 0) o della stessa org, come gia' fa il ramo
  category_slug. Evita di scrivere suppliers.category_id di un'altra org (dato sporco
  cross-org). Finding review multi-agente (MINORE, correttezza dati).
- docs/sql/032,033: header "PROPOSTA DI DESIGN (NON applicata)" -> "APPLICATA su
  produzione 2026-05-31" (sono effettivamente applicate). Evita confusione operativa.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile 2026-05-31 11:16:43 +02:00
parent d638f9a3bb
commit 5c7ed9abcb
3 changed files with 9 additions and 3 deletions

View File

@ -617,7 +617,13 @@ class SupplyChainController extends BaseController
); );
$catId = $cat['id'] ?? null; $catId = $cat['id'] ?? null;
} elseif (!empty($r['category_id'])) { } elseif (!empty($r['category_id'])) {
$catId = (int) $r['category_id']; // Verifica scope: la categoria deve essere un preset (org 0) o della stessa org,
// altrimenti si scriverebbe un category_id di un'altra org (dato sporco cross-org).
$cat = Database::fetchOne(
'SELECT id FROM supplier_categories WHERE id = ? AND organization_id IN (0, ?)',
[(int) $r['category_id'], $orgId]
);
$catId = $cat['id'] ?? null;
} }
$data = [ $data = [

View File

@ -1,7 +1,7 @@
-- ============================================================================ -- ============================================================================
-- Migration 032 - Modulo Questionari Fornitori (supply chain Art.21.2.d) -- Migration 032 - Modulo Questionari Fornitori (supply chain Art.21.2.d)
-- ---------------------------------------------------------------------------- -- ----------------------------------------------------------------------------
-- PROPOSTA DI DESIGN (NON ancora applicata). Da eseguire su host MySQL. -- APPLICATA su produzione (host MySQL) il 2026-05-31. Idempotente: ri-eseguibile.
-- --
-- SOSTITUISCE supplier_questionnaires (mig 027, da qui DEPRECATA/read-only) con -- SOSTITUISCE supplier_questionnaires (mig 027, da qui DEPRECATA/read-only) con
-- un modello completo a template versionati + campagne + domande + risposte: -- un modello completo a template versionati + campagne + domande + risposte:

View File

@ -1,7 +1,7 @@
-- ============================================================================ -- ============================================================================
-- Migration 033 - suppliers: categoria, provenienza import, soft-delete (guard) -- Migration 033 - suppliers: categoria, provenienza import, soft-delete (guard)
-- ---------------------------------------------------------------------------- -- ----------------------------------------------------------------------------
-- PROPOSTA DI DESIGN (NON ancora applicata). Da eseguire su host MySQL. -- APPLICATA su produzione (host MySQL) il 2026-05-31. Idempotente: ri-eseguibile.
-- --
-- Estende suppliers per il nuovo modulo questionari/import: -- Estende suppliers per il nuovo modulo questionari/import:
-- - category_id : FK supplier_categories (classificazione fornitore) -- - category_id : FK supplier_categories (classificazione fornitore)