-- ============================================================
-- Migration: Update items dengan code "AGR%" ke Item Group "POLARIS"
-- Database: sapharmaco_sapps
-- Date: 2026-03-02
-- Description: Semua item yang memiliki code dimulai dengan "AGR"
--              akan diubah item group-nya menjadi "POLARIS"
-- ============================================================

-- ===========================
-- STEP 1: VERIFIKASI SEBELUM UPDATE
-- ===========================

-- Cek apakah item group "POLARIS" ada
SELECT id, display_name, company_id, enabled
FROM itemgroups
WHERE display_name = 'POLARIS';

-- Cek jumlah item yang akan terdampak
SELECT COUNT(*) AS total_items_affected
FROM items
WHERE code LIKE 'AGR%';

-- Preview item yang akan diupdate (lihat 20 teratas)
SELECT i.id, i.code, i.display_name, i.itemgroup_id, 
       ig.display_name AS current_item_group,
       i.company_id
FROM items i
LEFT JOIN itemgroups ig ON i.itemgroup_id = ig.id
WHERE i.code LIKE 'AGR%'
ORDER BY i.code
LIMIT 20;

-- ===========================
-- STEP 2: UPDATE
-- ===========================

-- Update semua item dengan code "AGR%" ke item group "POLARIS"
-- Ganti <POLARIS_ID> dengan ID item group POLARIS yang didapat dari STEP 1
-- Contoh: jika ID POLARIS = 5, maka ganti <POLARIS_ID> dengan 5

UPDATE items
SET itemgroup_id = (SELECT id FROM itemgroups WHERE display_name = 'POLARIS' LIMIT 1),
    modified = NOW(),
    modified_by = 1
WHERE code LIKE 'AGR%';

-- ===========================
-- STEP 3: VERIFIKASI SETELAH UPDATE
-- ===========================

-- Verifikasi hasilnya
SELECT i.id, i.code, i.display_name, i.itemgroup_id,
       ig.display_name AS item_group_name,
       i.company_id
FROM items i
LEFT JOIN itemgroups ig ON i.itemgroup_id = ig.id
WHERE i.code LIKE 'AGR%'
ORDER BY i.code;

-- Pastikan semua item "AGR%" sudah menjadi "POLARIS"
SELECT 
  COUNT(*) AS total_agr_items,
  COUNT(CASE WHEN ig.display_name = 'POLARIS' THEN 1 END) AS polaris_count,
  COUNT(CASE WHEN ig.display_name != 'POLARIS' OR ig.display_name IS NULL THEN 1 END) AS non_polaris_count
FROM items i
LEFT JOIN itemgroups ig ON i.itemgroup_id = ig.id
WHERE i.code LIKE 'AGR%';
