#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": {