Skip to main content
#P1113

Function storeRefundCharterReservation

·  هدف:

این متد فرآیند استرداد (Refund) یک یا چند رزرو را مدیریت می‌کند. این تابع به صورت دسته‌ای عمل کرده و می‌تواند لیستی از رزروها را دریافت و برای هر یک، عملیات استرداد را بر اساس قوانین و جریمه‌های تعریف شده انجام دهد. این تابع با محاسبه مبلغ جریمه، به‌روزرسانی وضعیت رزرو به “مسترد شده” (status=3) و ثبت یک رکورد در جدول charter_refunds، فرآیند استرداد را به صورت کامل و اتمی پیاده‌سازی می‌کند.

ویژگی‌ها توضیحات
هدف کلی ثبت درخواست استرداد برای یک یا چند رزرو چارتر.
پردازش دسته‌ای قابلیت استرداد چندین رزرو با یک درخواست واحد.
محاسبه جریمه محاسبه خودکار مبلغ جریمه بر اساس درصد (percent) یا مبلغ ثابت (amount).
ثبت تراکنش ثبت تمام جزئیات استرداد شامل مبلغ جریمه و مبلغ قابل بازگشت در جدول charter_refunds.
به‌روزرسانی وضعیت تغییر وضعیت رزروهای مسترد شده به 3 (Refund) و ثبت refund_id.
اعتبارسنجی بررسی می‌کند که آیا رزرو قبلاً مسترد شده است یا خیر.

·     ورودی‌ها (پارامتر‌ها):

 

توضیحات موقعیت نوع داده نام پارمتر
(اجباری) آرایه‌ای از آبجکت‌ها. هر آبجکت نماینده یک رزرو برای استرداد است. Body array $request->items
(اجباری) شناسه رزرو (charter_reservations.id) که باید مسترد شود. Body (items) integer item.id
(اجباری) نوع جریمه. باید یکی از مقادیر percent (درصدی) یا amount (مبلغی) باشد. Body (items) string item.penalty_type
(اجباری) مقدار جریمه. اگر penalty_type برابر percent باشد، این مقدار یک عدد بین ۰ تا ۱۰۰ است. اگر amount باشد، یک مبلغ ثابت است. Body (items) numeric item.penalty
(اختیاری) توضیحات مربوط به دلیل استرداد. Body (items) string item.description

·     خروجی (Return):

 

توضیحات نوع داده
در صورت موفقیت کامل، یک پاسخ خالی با کد وضعیت 204 No Content برمی‌گرداند. Illuminate\Http\JsonResponse
در صورت بروز خطا (مانند یافت نشدن رزرو یا استرداد تکراری)، یک پاسخ با کد 400 Bad Request یا 409 Conflict به همراه پیام خطا برمی‌گرداند. Illuminate\Http\JsonResponse

·  مثال استفاده / سناریو:

سناریو: استرداد دو رزرو با شناسه‌های ۵۰۱ و ۵۰۲.

  • رزرو ۵۰۱ با ۱۰٪ جریمه.

  • رزرو ۵۰۲ با جریمه ثابت ۵۰۰,۰۰۰ ریال.

  • Request Body:

json
    {
        "items": [
            {
                "id": 501,
                "penalty_type": "percent",
                "penalty": 10,
                "description": "کنسلی توسط مسافر"
            },
            {
                "id": 502,
                "penalty_type": "amount",
                "penalty": 500000,
                "description": "تغییر برنامه پرواز"
            }
        ]
    }
  • Action:
  1. تابع یک حلقه روی آرایه items اجرا می‌کند.
  2. برای id: 501، رزرو را از دیتابیس می‌خواند، مبلغ کل آن را برمی‌دارد و ۱۰٪ آن را به عنوان جریمه محاسبه می‌کند.
  3. برای id: 502، رزرو را می‌خواند و مبلغ ۵۰۰,۰۰۰ را مستقیماً به عنوان جریمه در نظر می‌گیرد.
  4. برای هر دو، یک رکورد در جدول charter_refunds ایجاد می‌کند و جزئیات مالی و جریمه را ثبت می‌کند.
  5. وضعیت هر دو رزرو را در جدول charter_reservations به 3 تغییر داده و refund_id مربوطه را در آن ذخیره می‌کند.
  • Response:
  • کد وضعیت: 204 No Content