#P1636
GET /v2/redis-accounting/documents/date-range
Get Documents By Date Range
این اندپوینت اسناد حسابداری را بر اساس یک بازهٔ تاریخ شمسی (Jalali) از Redis استخراج میکند. استخراج اسناد بر اساس ایندکس تاریخ شمسی accounting:docs:by_jalali_date انجام شده و خروجی شامل لیست اسناد، تعداد کل اسناد و اطلاعات معتبر از بازهٔ ارسالشده است.
Request Overview
URL:
/v2/redis-accounting/documents/date-rangeMethod: GET
Middleware: authWithJwt, shamsiDate
Query Parameters
| Field | Type | Required | Description |
|---|---|---|---|
start_date |
string (YYYY-MM-DD) | yes | تاریخ شمسی شروع بازه |
end_date |
string (YYYY-MM-DD) | yes | تاریخ شمسی پایان بازه |
Request Example
GET /v2/redis-accounting/documents/date-range?start_date=1403-01-01&end_date=1403-03-31
Validation Rules
- start_date: required + regex YYYY-MM-DD
- end_date: required + regex YYYY-MM-DD
- start_date <= end_date
- هر دو تاریخ باید با Jalalian قابل تبدیل باشند
Response (Success)
ساختار خروجی بر اساس منطق RedisAccountingService است.
| Field | Type | Description |
|---|---|---|
success |
boolean | True در صورت موفقیت عملیات |
data.documents |
array | لیست کامل اسناد فلت (بدون diffProcess) |
data.total_documents |
integer | تعداد دقیق اسناد بازگرداندهشده |
data.date_range |
object | جزئیات بازه شمسی و میلادی مبنا |
{
"success": true,
"data": {
"documents": [
{
"id": "88401",
"date": "1403-02-15",
"debit": "450000",
"credit": "0",
"group": "10",
"general": "101",
"account": "1011",
"subsidiary": "1011001"
}
],
"total_documents": 1,
"date_range": {
"start": "1403-01-01",
"end": "1403-03-31",
"start_shamsi": "1403/01/01",
"end_shamsi": "1403/03/31"
}
}
}
Response (Validation Error)
{
"success": false,
"message": "خطا در اعتبارسنجی - تاریخ باید به صورت شمسی (YYYY-MM-DD) باشد",
"errors": {
"start_date": [
"The start_date format is invalid."
]
}
}
Response (Start > End)
{
"success": false,
"message": "تاریخ شروع باید کوچکتر یا مساوی تاریخ پایان باشد"
}
Response (Server Error)
{
"success": false,
"message": "خطا در دریافت اسناد: Internal server error..."
}
Internal Redis Architecture
| Key Pattern | Type | Description |
|---|---|---|
accounting:docs:by_jalali_date |
Sorted Set | ایندکس اصلی بازه تاریخ؛ score = YYYYMMDD شمسی |
accounting:doc:{id} |
Hash | اطلاعات کامل سند |
Process Flow
Validate Input Format (Regex)
↓
Parse Jalali Dates (Jalalian)
↓
Validate start_date <= end_date
↓
Convert YYYY-MM-DD → YYYYMMDD scores
↓
Fetch IDs from ZSET by Score Range
↓
Load Each Document via HGETALL
↓
Sort Docs by Jalali Date
↓
Return Final JSON Payload