#P1643
POST /v2/batch-accounting/process/year
Process Batch Documents By Year
این اندپوینت اسناد حسابداری را بر اساس یک سال شمسی مشخص پردازش میکند. ابتدا تاریخ شروع سال و پایان سال شمسی محاسبه میشود، سپس عملیات دستهای (Batch Processing) توسط متد processBatchByDateRange اجرا میگردد. نتیجه نهایی شامل تعداد اسناد پردازششده، تعداد خطاها و مجموع Batchهای اجرا شده است.
Request Overview
URL:
/v2/batch-accounting/process/yearMethod: POST
Middleware: authWithJwt, shamsiDate
Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
year |
integer | yes | سال شمسی بین 1300 تا 1500 برای پردازش اسناد |
batch_size |
integer | no | سایز هر Batch. حداقل 50 و حداکثر 2000. مقدار پیشفرض: 500. |
Request Example
POST /v2/batch-accounting/process/year
{
"year": 1402,
"batch_size": 800
}
Validation Rules
- year: required + integer + min=1300 + max=1500
- batch_size: integer + min=50 + max=2000
- اعتبارسنجی سال و ورودیها قبل از پردازش انجام میشود
Response (Success)
ساختار خروجی بر اساس BatchAccountingService::processBatchByYear است.
| Field | Type | Description |
|---|---|---|
success |
boolean | نتیجه کلی پردازش |
data.total_processed |
integer | تعداد کل اسناد پردازششده در سال |
data.total_errors |
integer | تعداد خطاهای رخداده |
data.batches_count |
integer | تعداد Batchهای اجراشده |
message |
string | پیام نهایی پردازش سال |
{
"success": true,
"data": {
"success": true,
"total_processed": 7800,
"total_errors": 12,
"batches_count": 16
},
"message": "پردازش سال 1402 کامل شد. 7800 سند پردازش شد."
}
Response (Validation Error)
{
"success": false,
"message": "خطا در اعتبارسنجی",
"errors": {
"year": [
"The year must be between 1300 and 1500."
]
}
}
Response (Server Error)
{
"success": false,
"message": "خطا در پردازش سال: Internal server error..."
}
Internal Architecture
| Component | Description |
|---|---|
processBatchByYear() |
محاسبه تاریخ آغاز سال و انتهای سال شمسی سپس فراخوانی processBatchByDateRange |
ShamsiDateHelper::endOfYear |
استخراج آخرین روز سال شمسی بر اساس تاریخ شروع |
processBatchByDateRange() |
پردازش دستهای شامل chunking، sleep بین batchها و محاسبه خروجی |
Process Flow
Validate JWT Token
↓
Validate Request Body (year + batch_size)
↓
Compute startOfYear = {year}-01-01
↓
Compute endOfYear via ShamsiDateHelper::endOfYear
↓
Call processBatchByDateRange(startOfYear, endOfYear, batchSize)
↓
Execute Batch Processing (chunking + throttling + batch execution)
↓
Aggregate Results (processed + errors + batch_count)
↓
Return Final JSON Response