Skip to main content
#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-range
Method: 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