# POST /v2/manual-document/get

<div id="bkmrk-" style="direction: rtl; font-family: Vazir, Tahoma; line-height: 1.9; text-align: justify;"></div>### Route Info

<div id="bkmrk-method-endpoint-cont" style="direction: rtl; font-family: Vazir, Tahoma; line-height: 1.9; text-align: justify;"><table border="1" style="width: 100%; border-collapse: collapse; text-align: center;"><tbody><tr style="background: #f4f4f4; font-weight: bold;"><td style="padding: 10px;">Method</td><td style="padding: 10px;">Endpoint</td><td style="padding: 10px;">Controller</td></tr><tr><td style="direction: ltr; padding: 10px;">POST</td><td style="direction: ltr; padding: 10px;">/v2/manual-document/get</td><td style="direction: ltr; padding: 10px;">AccountingController@getManualDocument</td></tr></tbody></table>

</div>### شرح عملکرد (Functionality)

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

فرآیند متد:

<div id="bkmrk-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D9%88-%D8%A8%D8%A7%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C-%D8%B1%DA%A9%D9%88%D8%B1" style="direction: rtl; font-family: Vazir, Tahoma; line-height: 1.9; text-align: justify;">- جستجو و بازیابی رکورد موردنظر از جدول `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`
    - توضیحات، زیر شماره‌ها، وضعیت و جمع کل

</div>### پارامترهای ورودی (JSON Body)

**Body:**

```
{
  "id": 1524
}
```

<div id="bkmrk-id%3A-%D8%B4%D9%86%D8%A7%D8%B3%D9%87-%D8%B3%D9%86%D8%AF-%D8%AF%D8%B1-%D8%AC%D8%AF%D9%88" style="direction: rtl; font-family: Vazir, Tahoma; line-height: 1.9; text-align: justify;">- **id**: شناسه سند در جدول `manual_documents` (اجباری)

</div>### خروجی موفق (Success Response)

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

<div id="bkmrk-items%3A-%D9%84%DB%8C%D8%B3%D8%AA-%DA%A9%D8%A7%D9%85%D9%84-%D9%BE%D8%B1%D8%AF" style="direction: rtl; font-family: Vazir, Tahoma; line-height: 1.9; text-align: justify;">- **items**: لیست کامل پرداخت‌ها/دریافت‌های سند
- **payload**: اطلاعات کامل سند
- **meta**: زمان اجرا

</div>```
{
  "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
  }
}
```

<div id="bkmrk--1" style="direction: rtl; font-family: Vazir, Tahoma; line-height: 1.9; text-align: justify;"></div>### خروجی خطا (Error Response)

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

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

<div id="bkmrk--2" style="direction: rtl; font-family: Vazir, Tahoma; line-height: 1.9; text-align: justify;"></div>### نکات داخلی اجرای متد

<div id="bkmrk-%DA%A9%D9%84%DB%8C%D8%AF-redis-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A2%DB%8C%D8%AA%D9%85" style="direction: rtl; font-family: Vazir, Tahoma; line-height: 1.9; text-align: justify;">- کلید Redis برای آیتم‌ها:   
    `accounting:pays:{id}`
- در صورت عدم وجود داده در Redis:   
    `V2CreditDebitController::convertPayDetailsDbToTable()`
- تبدیل شناسه‌ها به عنوان و ساختار کامل:   
    `Functions::getDetailsItems(type, id, "autocomplete")`
- عنوان سند از:   
    `getManualDocumentTitle()`
- serial خروجی سند = **serial + 1000**

</div>