#P1602
POST /v2/manual-document/list
Route Info
| Method | Endpoint | Controller |
| POST | /v2/manual-document/list | AccountingController@listManualDocument |
شرح عملکرد (Functionality)
این مسیر برای لیستگیری، جستجو، فیلتر و صفحهبندی اسناد دستی در جدول manual_documents استفاده میشود. عملکرد متد به صورت زیر است:
- دریافت ورودی JSON از کلید
jsonشامل تنظیمات صفحهبندی و فیلتر. - محاسبه مقدار
startبر اساس مقدار فعلی و طول (length). - اجرای کوئری با شروط:
- فیلتر تاریخ بین
fromوto - فیلتر براساس سال
- فیلتر شماره سند (from_document / to_document)
- فیلتر بر اساس branch
- فیلتر تاریخ بین
- بارگذاری گزارش تراز سند از Redis:
documents:balance_report:{id}
- در صورت نبود داده در Redis، فراخوانی
getManualDocumentDetails(). - ساخت خروجی استاندارد شامل:
- serial و system_serial
- title و description
- status فارسی
- تراز مالی (financial)
پارامترهای ورودی (JSON Body)
Body Parameter: کل ورودی در فیلد json ارسال میشود
{
"start": 0,
"length": 20,
"draw": 1,
"search": {
"from": "1403-01-01",
"to": "1403-01-30",
"year": "",
"from_document": "",
"to_document": ""
}
}
- start: نقطه شروع صفحهبندی
- length: تعداد آیتم در هر صفحه
- draw: شماره درخواست (برای DataTables)
- search.from / search.to: بازه تاریخی
- search.year: فیلتر سال
- from_document / to_document: بازه شماره سند (با تبدیل داخلی -1000)
خروجی موفق (Success Response)
{
"status": true,
"time": 1718450000,
"draw": 1,
"recordsTotal": 152,
"recordsFiltered": 20,
"data": [
{
"serial": 3125,
"system_serial": 125,
"type": "manual",
"title": "سند شماره 3125 | 1403/01/25 | دستی - توضیحات",
"date": "14030125",
"manual_serial": false,
"sub_serial": false,
"description": "توضیحات سند",
"status": "تائید نهایی",
"financial": {
"debit_financial_past": 0,
"credit_financial_past": 0,
"debit_start_period": 0,
"credit_start_period": 0,
"debit_during_period": 1500000,
"credit_during_period": 900000,
"debit_balance": 600000,
"credit_balance": 0
}
}
]
}
خروجی خطا (Error Response)
در صورت بروز خطای دیتابیس یا Exception:
{
"status": false,
"time": 1718450000,
"code": 5005,
"message": "SQL error message...",
"trace": [ ... ]
}
نکات داخلی (Internal Logic Notes)
- شماره سند خروجی =
serial + 1000 - تاریخ خروجی به صورت
YYYYMMDDدر فیلد date - عنوان سند از طریق
getManualDocumentTitle()ساخته میشود - گزارش تراز مالی سند در Redis با کلید
documents:balance_report:{id} - بازه صفحه =
currentPage = start / length