Skip to main content
#P1604

POST /v2/manual-document/get

Route Info

Method Endpoint Controller
POST /v2/manual-document/get AccountingController@getManualDocument

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

این مسیر جهت دریافت تمامی جزئیات یک سند دستی و تمام ردیف‌های وابسته به آن استفاده می‌شود.

فرآیند متد:

  • جستجو و بازیابی رکورد موردنظر از جدول manual_documents.
  • استخراج آیتم‌های مرتبط از جدول pays بر اساس group = id.
  • محاسبه مجموع:
    • تعداد آیتم‌ها (count)
    • جمع بدهکار (debit)
    • جمع بستانکار (credit)
  • استخراج جزئیات هر pay از Redis:
    • کلید: accounting:pays:{pay_id}
    • درصورت نبود داده: تبدیل داده با convertPayDetailsDbToTable
  • تبدیل شناسه‌های معین و طرف‌حساب به ساختار استاندارد با:
    • Functions::getDetailsItems()
  • برگشت ساختار استاندارد «document payload» شامل:
    • system_serial
    • serial (با +1000)
    • type
    • date
    • title با استفاده از getManualDocumentTitle
    • توضیحات، زیر شماره‌ها، وضعیت و جمع کل

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

Body:

{
  "id": 1524
}
  • id: شناسه سند در جدول manual_documents (اجباری)

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

خروجی شامل سه بخش اصلی است:

  • items: لیست کامل پرداخت‌ها/دریافت‌های سند
  • payload: اطلاعات کامل سند
  • meta: زمان اجرا
{
  "items": [
    {
      "id": 980211,
      "serial": 1452,
      "moeen": {
        "id": 1102,
        "serial": 220,
        "group": 4,
        "details": { ... },
        "type": { "fa": "معین", "en": "moeen" },
        "title": {
          "fa": { "simple": "بانک ملت", "html": "بانک ملت" }
        }
      },
      "preference": {
        "id": "colleague-5421",
        "serial": 5421,
        "title": "علی رضایی"
      },
      "preference_2": {
        "id": 1452,
        "title": 1452
      },
      "preference_3": false,
      "preference_4": false,
      "description": "واریز نقدی",
      "credit": 0,
      "debit": 850000
    }
  ],
  "payload": {
    "document": {
      "serial": 3125,
      "system_serial": 1524,
      "title": "سند شماره 3125 | دستی - توضیحات"
    },
    "system_serial": 1524,
    "serial": 3125,
    "type": "manual",
    "title": "سند شماره 3125 | دستی - توضیحات",
    "date": "1403/01/25",
    "manual_serial": false,
    "sub_serial": false,
    "description": "توضیحات سند",
    "total": {
      "count": 4,
      "debit": 3200000,
      "credit": 2400000
    },
    "status": 1
  },
  "meta": {
    "timestamp": 1718450000
  }
}

خروجی خطا (Error Response)

در صورت بروز Exception:

{
  "status": false,
  "time": 1718450000,
  "code": 5005,
  "message": "Error message...",
  "trace": [ ... ]
}

نکات داخلی اجرای متد

  • کلید Redis برای آیتم‌ها:
    accounting:pays:{id}
  • در صورت عدم وجود داده در Redis:
    V2CreditDebitController::convertPayDetailsDbToTable()
  • تبدیل شناسه‌ها به عنوان و ساختار کامل:
    Functions::getDetailsItems(type, id, "autocomplete")
  • عنوان سند از:
    getManualDocumentTitle()
  • serial خروجی سند = serial + 1000