Skip to main content
#P1399

POST /api/v2/references/{type}/list

اطلاعات مسیر (Route Info)

Method Endpoint Controller Middleware Purpose
POST /api/v2/references/{type}/list V2TradeController@referenceCreditDebit authWithJwt واکشی لیست فاکتورهایی که دارای مانده بدهکار (debit) یا بستانکار (credit) هستند.

Route Dynamics

این Route یک پارامتر دینامیک ($type) در URL خود دارد که تعیین‌کننده نوع گزارش است:
  • credit: گزارش فاکتورهایی که Financial['BalanceReceived'] آنها *غیر صفر* است (یعنی ما باید از مشتری دریافت کنیم).
  • debit: گزارش فاکتورهایی که Financial['BalancePaid'] آنها *غیر صفر* است (یعنی ما باید به تأمین‌کننده پرداخت کنیم).

منطق عملکرد (جریان داده)

تابع بر اساس دو حالت اصلی عمل می‌کند: جستجوی ساده یا جستجوی پیشرفته ($CheckAdvanced):

الف. جستجوی ساده (Simple Search - Value Empty)

  • بازه زمانی پیش‌فرض دو ماه گذشته است.
  • شناسه‌های فاکتور واجد شرایط، از جدول factors واکشی می‌شوند.
  • برای هر فاکتور، جزئیات مالی از Redis (reference:{id}:information) خوانده می‌شود.
  • تنها فاکتورهایی در لیست نهایی $tempIdFactorsGet قرار می‌گیرند که:
    • اگر $type == 'credit' باشد، BalanceReceived != 0.
    • اگر $type == 'debit' باشد، BalancePaid != 0.
  • فاکتورهای فیلترشده با join به جداول operators و customers کوئری نهایی و صفحه‌بندی می‌شوند (pagination).

ب. جستجوی پیشرفته (Advanced Search)

  • منطق فیلترینگ پیچیده‌ای روی فاکتورها و آیتم‌های فاکتور (FactorItem) اعمال می‌شود که شامل شماره پرواز، تاریخ حرکت، اپراتور، تعهددهنده (Pledger) و وضعیت است.
  • جستجوهای پیچیده‌ روی فیلدهای JSON در جدول FactorItem انجام می‌شود (مثل details->flight_no).
  • در نهایت، فاکتورهای واجد شرایط به دست آمده از جستجوی متنی/پیشرفته، دوباره بر اساس فیلتر مالی (BalanceReceived/Paid) فیلتر نهایی شده و صفحه‌بندی می‌شوند.

ج. پردازش نهایی و ترجمه

  • عنوان مسیر (RouteTitle) به‌شکل پویا بر اساس محصول (online, hotel, route, visa, ...) و زبان ($lang) و استفاده از جداول City/Airport/Hotel و کش Redis ساخته می‌شود. این قسمت سنگین‌ترین پردازش منطقی Route است.
  • اطلاعات تعهددهنده (Pledger) از Redis خوانده شده یا از DB محاسبه و کش می‌شود.

ورودی‌ها (Request Fields)

فیلد نوع ضروری توضیح
{type} string بله نوع گزارش: credit یا debit (از URL)
json JSON string بله شامل پارامترهای صفحه‌بندی و جستجو
lang object بله تنظیمات زبان کاربر (از middleware)

ساختار نمونه محتوای json:

{
  "draw": 1,
  "start": 0,
  "length": 10,
  "search": { "value": "" },
  "advanced": {