#P1664
POST /v2/charter
Charter: Create Inventory (Store)
این اندپوینت موتورقلب قدرتمندتپنده تولیدسیستم تعریف موجودی (Inventory) است. وظیفه آن تنهادریافت یک درجالگوی سادهزمانی نیست،و بلکهقیمتی، باو استفادهتبدیل آن به صدها رکورد فیزیکی در دیتابیس است. این متد از یک موتور تکرار (Replication Engine)،Engine داخلی استفاده میتواندکند تا تاریخهای پرواز یا رزرو هتل را بر اساس الگوهای زمانی،هفتگی، صدها رکورد پروازدورهای یا هتلتاریخهای خاص تولید کرده و تمام وابستگیهای مالی و قانونی را بادر قوانین مالی، سیاستهای کنسلی و تنظیمات قیمتگذاری پیچیده، بهصورتقالب تراکنشهای اتمیک تولیدذخیره کند.
Request Overview
/v2/charterKey Features & Behavior Summary
شناساییPoly-morphicهوشمندCreation:نوعپشتیبانیمحصولهمزمان از پرواز (RouteRoute)vsو هتل (Accommodation) با یک ساختار واحد.مدیریتAuto-Inversion: تولید خودکار مسیر برگشت (RoundOutbound)TripباLogic)جابجایی مبدا/مقصد و محاسبه اختلاف روز.- Smart Replication: تولید انبوه
تاریخهارکوردها بر اساسالگویروزهایتکرارهفته (Repeatشمسی)Pattern)یا بازههای زمانی. - Financial Complexity: مدیریت پلکانی قیمتها، مارکآپ (Markup)، کمیسیون و قوانین ملیت.
- Data Integrity: استفاده از
DB::transactionتراکنش دیتابیس برای هر تاریختولید(Fail-safeشدهper درج همزمان جداول وابسته (Items, Financials, Rules, Taxes)date).
Payload Schema (Root Parameters)Level)
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | نوع route | accommodation
|
|
| subtype | string | aircraft | train | bus
|
|
| branch | integer | Yes | شناسه شعبه ایجاد کننده |
| items | array | ||
| repeat | object | تنظیمات موتور تولید تاریخ ( |
|
| calculations | array | ||
| rules | object | قوانین استرداد ( |
Logic 1: InitializationRoute & Object Resolution
سیستم ابتدا نوعدادههای دادهورودی را تشخیص میدهد و دادههای خام را به شناسههای دیتابیس تبدیلنرمالسازی میکند:
//IFRoutetype(Aircraft)== 'route': IF subtype == 'aircraft': Origin/Dest IDs ->LookupLook up 'airports' table ->GetFetch CityIDName// RouteELSE (Train/Bus)train/bus): Origin/Dest IDs -> Used directly as CityIDName//IFAccommodationtype == 'accommodation': Object -> Hotel ID ->LookupLook up 'hotels' table ->GetFetch CityIDName Origin = Destination = City Name Start/End Time -> Set strictly to 00:00:00and/ 23:59:59
Logic 2: Outbound Handling (Round Trip HandlingTrip)
اگر در `items`اولین پارامترآیتم آرایه items، کلید outbound وجود داشته باشد:
یک آبجکت جدید برایمسیر برگشت به عنوان یک موجودیت جداگانه اما وابسته (Linked) ساخته میشود.مبداجایoriginومقصدdestinationجابجاتعویض (Swap) میشوند.شود.اختلافپارامترروزdiff(Diff)محاسبه میشود: فاصله زمانی بین رفت و برگشتمحاسبه(برایمیشود تااستفاده در تولیدانبوهتاریخهایتاریخها لحاظ گردد.بعدی).
Logic 3: DateThe Replication Engine
متغیر کلیدی $charterDates بر اساس آبجکت repeat، متغیر پر می$charterDatesشود:شود. این بخش هوشمند سیستم است:
Mode:Type: Dates (Manual)
{ "type": "dates", "dates": ["2025-10-2024-01-01", "2025-10-2024-01-05"] }
// تکراردقیقاً دقیق رویبرای همین تاریخها رکورد تولید میشود.
Mode:Type: Weekly (Pattern)
{
"type": "weekly",
"days": [1, 3, 5], // شنبه،1=شنبه, دوشنبه،3=دوشنبه چهارشنبه...
"from": "2024-01-01",
"to": "2024-03-01"
}
// حلقه روی بازه زمانی میچرخد و روزهای هفته شمسی را چک میکند.
Type: Periodic (Interval)
{
"type": "periodic",
"repeat_day": 2, // یک روز در میان
"from": "...", "to": "..."
// چک کردن روز هفته با Jalalian::getDayOfWeek()
Mode: Periodic
"type": "periodic", "repeat_day": 3, // هر 3 روز یکبار "from": "...", "to": "..."}
Logic 4: The Transaction Loop
برای هر تاریخ تولید شده، مراحل زیر در یک DB::transaction اجرا میشود:
Charters Table:درج هدر اصلی، تولید سریال نامبر، تنظیم پرمیشنها.Notifications:درج در `scheduled_notifications` (اگر `schedule` ارسال شده باشد).Items:درج در `charter_items` (انکود کردن جزئیات پرواز/هتل).
Logic 5: Financial & Calculations
پیچیدهتریندادههای بخشمالی کهدر جداول مالیجداگانه رابر پر میکند. دادهها دراساس ذخیره میشوند.{type}_calculationtype
//همچنینLoopجداولthroughواسطrequest->calculationsزیرif (type == 'route') { // Insert Base Pricing (Adult/Child/Infant) // Insert Taxes, Baggage, Features (is_round_trip) } if (type == 'accommodation') { // Insert Room Rates, Capacity, Facilities // Handle 'mapping_roomtypes' logic }
Financial Handling Table:
شامل سه نوع داده است که با فیلد type تفکیکپر میشوند:
-
Table Description charter_taxes مالیاتها به تفکیک بزرگسال، کودک و نوزاد. charter_financial_handling مدیریت سه نوع داده: Markup, Commission, Citizenship rules. charter_accommodation_rooms (فقط هتل) نگاشت شماره اتاقها و طبقات به کلاس نرخی. mapping_accommodations (فقط هتل) اتصال شناسه هتل لوکال به شناسه چارتر تولید شده ( افزایشAirplusنرخ)ID).Commission(کمیسیون) Citizenship (قوانین ملیت)
LogicExecution 6: Rules Insertion
// Refund Rules تبدیل زمان به "دقیقه" و درج در charter_refund_rules // Public Rules درج توضیحات عمومی در charter_public_rules
Response Structure
در صورت موفقیت:
{ "status": true, "time": 1733221456 }
در صورت خطا (Exception Caught):
{ "status": false, "time": 1733221456, "message": "SQL Error...", "trace": [...] }
Flowchart
Generate List of Dates
Calc / Tax / Markup / Rooms
Response Example
// Success
{
"status": true,
"time": 1715432100
}
// Error (Exception handled)
{
"status": false,
"time": 1715432105,
"message": "SQL Error: Column 'x' not found...",
"trace": [...]
}