-- =====================================================================
-- Clinic & Beauty Manager — Migration 002: فهرست مجوزها
-- idempotent: با اجرای دوباره، عنوان‌ها به‌روز می‌شوند و رکورد تکراری ساخته نمی‌شود.
-- نیازمند: 001_core_tables.sql
-- =====================================================================

SET NAMES utf8mb4;

INSERT INTO permissions (code, group_code, group_title, title, sort_order) VALUES
    ('customers.view', 'customers', 'مشتریان', 'مشاهده مشتری', 10),
    ('customers.create', 'customers', 'مشتریان', 'ثبت مشتری', 20),
    ('customers.edit', 'customers', 'مشتریان', 'ویرایش مشتری', 30),
    ('customers.delete', 'customers', 'مشتریان', 'حذف منطقی مشتری', 40),
    ('medical.view', 'medical', 'پرونده پزشکی', 'مشاهده پرونده پزشکی', 50),
    ('medical.edit', 'medical', 'پرونده پزشکی', 'ویرایش پرونده پزشکی', 60),
    ('medical.files', 'medical', 'پرونده پزشکی', 'مدیریت فایل‌ها و تصاویر پزشکی', 70),
    ('appointments.view', 'appointments', 'نوبت‌دهی', 'مشاهده نوبت‌ها', 80),
    ('appointments.create', 'appointments', 'نوبت‌دهی', 'ثبت نوبت', 90),
    ('appointments.edit', 'appointments', 'نوبت‌دهی', 'ویرایش نوبت و تغییر وضعیت', 100),
    ('appointments.cancel', 'appointments', 'نوبت‌دهی', 'لغو نوبت', 110),
    ('services.view', 'services', 'خدمات و خطوط خدمات', 'مشاهده خدمات', 120),
    ('services.manage', 'services', 'خدمات و خطوط خدمات', 'مدیریت خدمات و خطوط خدمات', 130),
    ('staff.view', 'staff', 'کارکنان', 'مشاهده کارکنان', 140),
    ('staff.manage', 'staff', 'کارکنان', 'مدیریت کارکنان و شیفت‌ها', 150),
    ('invoices.view', 'invoices', 'فاکتور', 'مشاهده فاکتور', 160),
    ('invoices.create', 'invoices', 'فاکتور', 'ثبت فاکتور', 170),
    ('invoices.finalize', 'invoices', 'فاکتور', 'نهایی‌سازی فاکتور', 180),
    ('invoices.correct', 'invoices', 'فاکتور', 'اصلاح فاکتور با سند اصلاحی', 190),
    ('payments.receive', 'payments', 'پرداخت', 'دریافت وجه', 200),
    ('payments.refund', 'payments', 'پرداخت', 'استرداد وجه', 210),
    ('cashier.manage', 'cashier', 'صندوق', 'مدیریت شیفت صندوق', 220),
    ('cashback.view', 'cashback', 'کش‌بک', 'مشاهده کش‌بک', 230),
    ('cashback.adjust', 'cashback', 'کش‌بک', 'تغییر دستی کش‌بک', 240),
    ('expenses.manage', 'expenses', 'هزینه‌ها', 'ثبت و مدیریت هزینه‌ها', 250),
    ('accounting.view', 'accounting', 'حسابداری', 'مشاهده حسابداری', 260),
    ('accounting.entries', 'accounting', 'حسابداری', 'ثبت سند حسابداری', 270),
    ('accounting.close_period', 'accounting', 'حسابداری', 'بستن دوره مالی', 280),
    ('commissions.view', 'commissions', 'کمیسیون', 'مشاهده کمیسیون', 290),
    ('commissions.approve', 'commissions', 'کمیسیون', 'تأیید و تسویه کمیسیون', 300),
    ('payroll.view', 'payroll', 'حقوق و دستمزد', 'مشاهده حقوق', 310),
    ('payroll.approve', 'payroll', 'حقوق و دستمزد', 'تأیید و تسویه حقوق', 320),
    ('inventory.view', 'inventory', 'انبار', 'مشاهده انبار', 330),
    ('inventory.manage', 'inventory', 'انبار', 'مدیریت انبار', 340),
    ('reports.view', 'reports', 'گزارش‌ها', 'مشاهده گزارش‌ها', 350),
    ('reports.export', 'reports', 'گزارش‌ها', 'خروجی گزارش‌ها', 360),
    ('sms.view', 'sms', 'پیامک', 'مشاهده پیامک‌ها', 370),
    ('sms.manage', 'sms', 'پیامک', 'مدیریت قالب و ارسال پیامک', 380),
    ('branches.manage', 'branches', 'شعب', 'مدیریت شعب', 390),
    ('users.manage', 'users', 'کاربران', 'مدیریت کاربران', 400),
    ('roles.manage', 'roles', 'نقش‌ها', 'مدیریت نقش‌ها و مجوزها', 410),
    ('settings.manage', 'settings', 'تنظیمات', 'تنظیمات سیستم', 420),
    ('audit.view', 'audit', 'Audit Log', 'مشاهده گزارش رویدادها', 430),
    ('backup.manage', 'backup', 'پشتیبان‌گیری', 'پشتیبان‌گیری و بازیابی', 440)
ON DUPLICATE KEY UPDATE
    group_code  = VALUES(group_code),
    group_title = VALUES(group_title),
    title       = VALUES(title),
    sort_order  = VALUES(sort_order);

INSERT IGNORE INTO schema_migrations (version, description) VALUES ('002', 'seed_permissions');
