=== کدها — توابع خالص === ✅ نرمال‌سازی: حروف بزرگ و حذف فاصله ✅ کد فارسی نامعتبر ✅ کد کوتاه‌تر از ۳ نامعتبر ✅ ارقام فارسی به انگلیسی ✅ تبدیل ارقام فارسی/عربی ✅ کد تصادفی: بدون حروف/ارقام شبیه هم ✅ انقضای خالی = null ✅ فقط-تاریخ = پایان همان روز ✅ datetime-local ✅ ۰ ساعت = بدون انقضا ✅ انقضا بر حسب ساعت ✅ وضعیت: تمام‌شده ✅ وضعیت: منقضی ✅ وضعیت: غیرفعال ✅ وضعیت: فعال ✅ برچسب درصد ✅ برچسب مبلغ ثابت === کدها — منطق با دیتابیس (داده‌ی موقت) === ✅ ساخت کد هدیه ✅ کد هدیه‌ی تکراری رد می‌شه ✅ کد تخفیف هم‌نام با کد هدیه رد می‌شه ✅ استفاده‌ی اول موفق (بدون حساسیت به حروف) ✅ استفاده‌ی دوباره‌ی همان کاربر رد می‌شه ✅ فقط یک‌بار شارژ شد ✅ ریست مصرف کد هدیه ✅ ساخت کد تخفیف ✅ درصد و مبلغ هم‌زمان رد می‌شه ✅ سقف کاربر بیشتر از سقف کل رد می‌شه ✅ اعتبارسنجی: ۱۰٪ از ۱۰۰٬۰۰۰ = ۱۰٬۰۰۰ ✅ کد «فقط اشتراک» برای محصول رد می‌شه ✅ ثبت مصرف برای هر سفارش فقط یک‌بار ✅ سقف هر کاربر (۱) بعد از مصرف اعمال می‌شه (داده‌ی موقت پاک شد) ✅ همه‌ی تست‌ها موفق