#P1642
POST /v2/batch-accounting/process/month
Process Batch Documents By Month
این اندپوینت اسناد حسابداری را بر اساس یک ماه شمسی مشخص دریافت کرده و آنها را به صورت دستهای (Batch Processing) پردازش میکند. ابتدا از تاریخ ورودی برای تعیین محدودهٔ کامل ماه استفاده میشود سپس عملیات پردازش دستهای بر اساس منطق processBatchByDateRange اجرا میگردد. خروجی شامل تعداد کل اسناد پردازششده، اطلاعات هر Batch و پیام نهایی مربوط به نام فارسی ماه است.
Request Overview
URL:
/v2/batch-accounting/process/monthMethod: POST
Middleware: authWithJwt, shamsiDate
Body Parameters
Request Example
POST /v2/batch-accounting/process/month
{
"month_date": "1403-05-01",
"batch_size": 200
}
Validation Rules
- month_date: required + regex YYYY-MM-DD
- batch_size: integer + min=10 + max=1000
- month_date باید با shamsiDate middleware معتبر تشخیص داده شود
Response (Success)
ساختار خروجی بر اساس BatchAccountingService::processBatchByDateRange است.
{
"success": true,
"data": {
"success": true,
"total_processed": 450,
"total_errors": 0,
"batches_count": 3
},
"message": "پردازش ماه مرداد کامل شد. 450 سند پردازش شد."
}
Response (Validation Error)
{
"success": false,
"message": "خطا در اعتبارسنجی",
"errors": {
"month_date": [
"The month_date format is invalid."
]
}
}
Response (Server Error)
{
"success": false,
"message": "خطا در پردازش ماه: Internal server error..."
}
Internal Architecture
Process Flow
Validate JWT Token
↓
Validate Shamsi Date (middleware)
↓
Validate Request Body (month_date + batch_size)
↓
Extract startOfMonth & endOfMonth (ShamsiDateHelper)
↓
Call processBatchByDateRange(start, end, batchSize)
↓
Execute Batch Processing (chunking + processing + throttling)
↓
Aggregate Results (processed + errors)
↓
Get Month Name (getMonthName)
↓
Return Final Response