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