Skip to main content
#P1601

DELETE /v2/manual-document

Route Info

Method Endpoint Controller
DELETE /v2/manual-document AccountingController@trashManualDocument

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

این مسیر جهت حذف نرم (Soft Delete) یک سند دستی (Manual Document) استفاده می‌شود. فرآیند عملکرد به صورت زیر است:

  • ابتدا تنظیم «پایان دوره مالی بسته» از جدول office_config خوانده می‌شود.
  • تاریخ سند موردنظر از جدول manual_documents گرفته شده و با تاریخ بسته مالی مقایسه می‌شود.
  • اگر تاریخ سند داخل بازه بسته مالی باشد، حذف انجام نمی‌شود و پیام خطا باز می‌گردد.
  • در صورت معتبر بودن تاریخ و شناسه:
    • فیلد status=5 روی رکورد سند و پرداخت‌های مرتبط در جدول pays اعمال می‌شود.
    • زمان ویرایش با Carbon::now() به‌روزرسانی می‌شود.
    • لاگ عملیات از طریق SystemLog ثبت و وارد صف snailJob می‌شود.
  • در نهایت پاسخ HTTP با وضعیت 204 No Content بازگردانده می‌شود.

ورودی‌ها (Request Inputs)

Body Parameters (JSON/Form):

{
  "id": 1542
}
  • id: شناسه سند دستی که باید حذف شود (الزامی)
  • branch: شناسه شعبه جاری (به صورت خودکار توسط سیستم/توکن ارسال می‌شود)
  • operator: اطلاعات اپراتور لاگین شده (از JWT)

خروجی موفق (Success Response)

در صورت موفقیت عملیات، پاسخ بدون بدنه با کد 204 بازگردانده می‌شود:

HTTP 204 No Content

خطاها (Error Responses)

۱) سند داخل دوره مالی بسته شده باشد

{
  "status": false,
  "time": 1718450000,
  "type": "danger",
  "code": 5007,
  "message": "حذف سند دستی در بازه زمانی بسته شده امکان پذیر نمی‌باشد. حساب ها تا تاریخ YYYY/MM بسته شده‌ است."
}

۲) عدم ارسال شناسه معتبر

{
  "error": {
    "code": 1000,
    "message": "شناسه سند ارسالی صحیح نمی باشد"
  },
  "meta": {
    "timestamp": 1718450000
  }
}

نکات داخلی (Internal Logic Notes)

  • تاریخ‌ها قبل از مقایسه با تابع Functions::checkDatetime نرمال‌سازی می‌شوند.
  • فیلد status=5 برای حذف نرم اسناد و پرداخت‌ها استفاده می‌شود.
  • لاگ شامل:
    • type = TrashManualDocument
    • goal = id سند
    • by = operator.id
    • ip, agent, datetime