Skip to main content
#P1608

POST /v2/accounting/closing

Route Info

Method Endpoint Controller Middleware
POST /v2/accounting/closing AccountingController@updateClosingAccount authWithJwt

شرح عملکرد (Functionality)

این مسیر برای بستن دوره مالی در یک شعبه استفاده می‌شود. قبل از اعمال بستن دوره، سیستم باید اطمینان پیدا کند که در بازه انتخاب‌شده هیچ سند قطعی‌نشده وجود ندارد. این بررسی شامل ۳ دسته سند اصلی است:

  • اسناد فروش (References / Factors)
  • اسناد دریافت-پرداخت (Payments)
  • اسناد دستی (Manual Documents)

اگر هرکدام از این موارد قطعی نشده باشند، مسیر با خطای 422 و پیام مناسب بازمی‌گردد. در صورت پاک بودن همه اسناد، مقدار جدید END_OF_FINANCIAL_PERIOD_CLOSING_ACCOUNTS برای شعبه در جدول office_config ثبت یا به‌روزرسانی می‌شود.

پارامترهای ورودی (JSON Body)

{
  "year": "1404",
  "month": "03",
  "branch": 1
}
  • year: سال شمسی دوره‌ای که باید بسته شود
  • month: ماه شمسی دوره‌ای که باید بسته شود
  • branch: شعبه هدف

منطق بررسی اسناد قطعی‌نشده (checkDocumentsForClosingAccount)

این تابع ۳ نوع سند را بررسی می‌کند:

اسناد فروش (factors)

هر سندی که:

  • برای همان شعبه باشد
  • status != 3 باشد (یعنی قطعی نشده باشد)
  • در سال/ماه مورد نظر ثبت شده باشد

اسناد دریافت/پرداخت (pays)

منطق حساس و دوگانه:
  • اگر created_at داشته باشد: باید ≤ آخر سال میلادی متناظر باشد
  • اگر deadline (مخصوص چک) داشته باشد: باید ≤ آخر ماه شمسی متناظر باشد و type_pay = check
  • پرداخت‌هایی که داخل سند گروه‌بندی شده‌اند (group IS NOT NULL) بررسی نمی‌شوند

اسناد دستی (manual_documents)

  • status != 3 → قطعی نشده
  • date ≤ YYYYMM31

خروجی تابع:

{
  "references": true | false,
  "payments": true | false,
  "manual_documents": true | false,
  "salary": false,
  "treasury_bills": false
}

پاسخ خطا (422)

اگر هرگونه سند قطعی‌نشده وجود داشته باشد:

{
  "error": {
    "code": 1000,
    "message": "اسناد فروش روزانه | دارای سند قطعی نشده می باشد. قبل از بستن حساب ها، تمامی اسناد باید قطعی شوند."
  },
  "meta": {
    "timestamp": 1733056000
  }
}

*نوع پیام بسته به اولین پرچم فعال در خروجی checkDocumentsForClosingAccount است:

  • references → "اسناد فروش روزانه"
  • payments → "اسناد دریافت پرداخت"
  • manual_documents → "اسناد دستی"

پاسخ موفق (Success Response)

اگر هیچ سندی مانع بستن دوره نباشد:

  • اگر مقدار قبلاً در office_config وجود داشته باشد → update
  • اگر وجود نداشته باشد → insert

پاسخ:

Status: 204 No Content
Body: ""

وابستگی دیتابیس

Table Description
office_config ذخیره مقدار پایان دوره مالی (فرمت: YYYYMM)
factors اسناد فروش روزانه
pays اسناد دریافت و پرداخت
manual_documents سندهای دستی

META

  • HTTP Status Codes: 204, 422
  • کاملاً منطبق با عملیات واقعی حسابداری
  • هیچ داده اضافی در صورت موفقیت بازگشت داده نمی‌شود