-- Миграция для добавления полей item_type, service_items, material_items в таблицу payment_invoices
-- (если таблица уже существует без этих полей)

-- Проверяем и добавляем item_type
DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 
    FROM information_schema.columns 
    WHERE table_name = 'payment_invoices' 
    AND column_name = 'item_type'
  ) THEN
    ALTER TABLE payment_invoices
    ADD COLUMN item_type VARCHAR(20) NOT NULL DEFAULT 'service' 
    CHECK (item_type IN ('service', 'materials'));
    
    COMMENT ON COLUMN payment_invoices.item_type IS 'Тип предмета счета: service (услуга) или materials (ТМЦ)';
  END IF;
END $$;

-- Проверяем и добавляем service_items
DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 
    FROM information_schema.columns 
    WHERE table_name = 'payment_invoices' 
    AND column_name = 'service_items'
  ) THEN
    ALTER TABLE payment_invoices
    ADD COLUMN service_items JSONB DEFAULT '[]';
    
    COMMENT ON COLUMN payment_invoices.service_items IS 'Список услуг: [{name, amount}]';
  END IF;
END $$;

-- Проверяем и добавляем material_items
DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 
    FROM information_schema.columns 
    WHERE table_name = 'payment_invoices' 
    AND column_name = 'material_items'
  ) THEN
    ALTER TABLE payment_invoices
    ADD COLUMN material_items JSONB DEFAULT '[]';
    
    COMMENT ON COLUMN payment_invoices.material_items IS 'Список ТМЦ: [{name, quantity, unit, pricePerUnit, amount}]';
  END IF;
END $$;

-- Делаем service_description необязательным (для обратной совместимости)
DO $$
BEGIN
  ALTER TABLE payment_invoices
  ALTER COLUMN service_description DROP NOT NULL;
EXCEPTION
  WHEN OTHERS THEN
    -- Игнорируем ошибку, если колонка уже не NOT NULL
    NULL;
END $$;
