#P1644
POST /v2/batch-accounting/process/current-month
Process Batch Documents of Current Month
این اندپوینت ماه جاری شمسی را به صورت خودکار تشخیص داده و اسناد آن را با استفاده از پردازش دستهای (Batch Processing) پردازش میکند. تاریخ روز جاری از طریق ShamsiDateHelper::today() استخراج میشود و سپس عملیات ماه جاری مانند متد processBatchByMonth انجام میگیرد. پیام نهایی شامل نام فارسی ماه جاری است.
Request Overview
URL:
/v2/batch-accounting/process/current-monthMethod: POST
Middleware: authWithJwt, shamsiDate
Body Parameters
| Field | Type | Required | Description |
|---|---|---|---|
batch_size |
integer | no | سایز Batchها. حداقل مقدار در متدهای سال و ماه متفاوت است اما اینجا مقدار پیشفرض 100 است. |
Request Example
POST /v2/batch-accounting/process/current-month
{
"batch_size": 150
}
Validation Rules
- batch_size: integer (در صورت ارسال)
- year/month/day استخراجشده از today() توسط middleware shamsiDate معتبر در نظر گرفته میشود
Response (Success)
| Field | Type | Description |
|---|---|---|
success |
boolean | نتیجه پردازش دستهای |
data.total_processed |
integer | تعداد کل اسناد پردازششده در ماه جاری |
data.total_errors |
integer | تعداد خطاهای رخداده در Batchها |
data.batches_count |
integer | تعداد Batchهای اجراشده |
message |
string | پیام شامل نام فارسی ماه جاری (getMonthName) |
{
"success": true,
"data": {
"success": true,
"total_processed": 1120,
"total_errors": 0,
"batches_count": 8
},
"message": "پردازش آذر جاری کامل شد. 1120 سند پردازش شد."
}
Response (Server Error)
{
"success": false,
"message": "خطا در پردازش ماه جاری: Internal server error..."
}
Internal Architecture
| Component | Description |
|---|---|
ShamsiDateHelper::today() |
بازگرداندن تاریخ کامل امروز شمسی به صورت YYYY-MM-DD |
processBatchByMonth() |
محاسبه start/end ماه و ارسال به processBatchByDateRange |
getMonthName() |
استخراج نام فارسی ماه از روی شماره ماه استخراجشده از today() |
processBatchByDateRange() |
منطق اصلی Batch Processing شامل chunking، sleep بین Batchها و محاسبه خروجی |
Process Flow
Validate JWT Token
↓
Extract Current Date (ShamsiDateHelper::today)
↓
Compute Start/End of Month via startOfMonth & endOfMonth
↓
Call processBatchByMonth(currentDate, batchSize)
↓
processBatchByDateRange(start, end, batchSize)
↓
Execute Batch Processing (chunking + throttling)
↓
Aggregate Results (processed + errors + batch_count)
↓
Get Current Month Name (getMonthName)
↓
Return JSON Response