Skip to main content
#P1710

POST /v2/trade/tickets

Trade: Tickets & Vouchers Data

این اندپوینت وظیفه استخراج اطلاعات کامل بلیت‌ها، واچرها و فاکتورها را برای نمایش یا چاپ بر عهده دارد.
این سرویس منطق پیچیده‌ای برای گردآوری اطلاعات مسافران، تامین‌کنندگان، وضعیت آیتم‌ها (عادی یا استردادی) و تنظیمات نمایش قیمت دارد.

Request Overview

URL: /v2/trade/tickets
Method: POST
Controller: V2TradeController@ticketsTrade

Access Control

  • دسترسی عمومی (Public) یا محدود شده (در کد میدلوری مشخص نشده اما احتمالا نیاز به توکن دارد).
  • نیاز به ارسال `branch` معتبر.

Body Parameters

Field Type Description
branch integer (الزامی) شناسه شعبه برای فیلتر کردن فاکتورها.
id mixed (الزامی) شناسه سند مورد نظر. رفتار این فیلد دوگانه است:
  • Array/Object: اگر آرایه باشد، به عنوان لیست `id`های جدول `factors` در نظر گرفته می‌شود.
  • Single Value: اگر تک مقدار باشد، به عنوان شماره سریال نمایشی در نظر گرفته می‌شود و سیستم به طور خودکار `ReferenceExtension` را از آن کم می‌کند تا سریال دیتابیس (`serial`) را پیدا کند.
lang[id] string (اختیاری) کد زبان (پیش‌فرض: `fa`).

Logic Details

منطق پردازش این سرویس شامل مراحل زیر است:

  1. واکشی رفرنس (Factor): اطلاعات پایه فاکتور با Join به جداول `operators` و `customers` دریافت می‌شود.
  2. بررسی قابلیت چاپ:
    • اگر print == 0 باشد، خطای "عدم قابلیت چاپ" برمی‌گرداند.
    • اگر status == 5 باشد، خطای وضعیت همراه با توضیحات فاکتور برمی‌گرداند.
  3. تعیین حالت نمایش (Print Mode):
    • 1: مشاهده بدون قیمت.
    • 2: مشاهده با قیمت.
    • 3: عدم مشاهده بلیت و واچر (مسدود).
  4. پردازش آیتم‌ها (Factor Items):
    • بررسی وضعیت آیتم: آیتم‌های `refund` همیشه بررسی می‌شوند، اما آیتم‌های `online` بر اساس فیلد JSON `Status` بررسی می‌شوند.
    • استخراج مسافران:
      • اگر سرویس هتل (`accommodation`) باشد، لیست `roommate` از JSON استخراج می‌شود.
      • اطلاعات کامل مسافر از `customers` واکشی می‌شود.
      • کشینگ (Redis): اطلاعات کشور (`countries`) برای هر مسافر در Redis کش می‌شود تا فشار بر دیتابیس کاهش یابد.
    • استخراج تامین‌کننده: اطلاعات `colleagues` با استفاده از Redis کش و بازیابی می‌شود.
    • ساختاردهی خروجی: آیتم‌ها بر اساس نوع (`product`/`byproduct`) و شناسه مسافر گروه‌بندی می‌شوند. آیتم‌های استردادی (`refund`) به صورت تو در تو داخل آیتم اصلی قرار می‌گیرند.
  5. اطلاعات تماس (Branding): اگر فیلد `colleague_auth` مقدار داشته باشد، اطلاعات آژانس همکار (لوگو، آدرس، تلفن) جایگزین اطلاعات پیش‌فرض می‌شود.

Response Structure

نکته مهم: در کد فعلی، حتی در صورت موفقیت‌آمیز بودن عملیات و بازگشت دیتا، مقدار status برابر با false و کد 5008 برگردانده می‌شود (احتمالاً یک استاندارد داخلی یا لگاسی کد).

{
  "status": false,  // ! توجه: طبق کد موجود فالس برمی‌گرداند
  "code": 5008,
  "data": [
    {
      "confirmation": 1,
      "serial_id": 100500,
      "track_code": "09-1200", // فرمت: ماه-سریال
      "print": {
        "id": 1,
        "title": { "fa": "مشاهده بدون قیمت", "en": "view without price" }
      },
      "internal": true,
      "contact_information": {
        "logo": "url...",
        "address": "Tehran...",
        "phone": "021..."
      },
      "operator": {
        "first_name": "Admin",
        "last_name": "User",
        "mobile": "0912..."
      },
      "leader": {
        "firstname_fa": "علی",
        "lastname_fa": "علوی",
        "mobile": "0912..."
      },
      "data": {
        // آرایه‌ای از آیتم‌ها گروه‌بندی شده بر اساس شناسه آیتم/مسافر
        "route_123": [
           {
             "serial_id": 50,
             "action": "route",
             "passenger": { ... }, // آبجکت کامل مسافر
             "sell": false,        // یا مبلغ اگر print=2 باشد
             "route": { ... }      // جزئیات پرواز
           }
        ]
      },
      "created": "2024-05-10 10:00:00"
    }
    // ممکن است شامل آبجکت‌های خطا هم باشد اگر یکی از فاکتورها مشکل داشته باشد
    // { "status": false, "code": 5006, "message": "..." }
  ]
}

Flowchart

Start
Input ID Type?
Array
WhereIn('id', list)
Single
Where('serial', input - Extension)
Fetch Factors with Joins
Loop Factors
Printable?
No
Return Error 5006/5001
↓ (Yes)
Determine Print Mode (1, 2, 3)
Process Items
- Check Item Status
- Extract Passengers (Redis Cache)
- Extract Suppliers (Redis Cache)
- Handle Refunds
Format Output & Contact Info
Return JSON (Code 5008)