# POST /v2/accounting/account

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

<div id="bkmrk-method-endpoint-cont" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;"><div><table border="1" style="width: 100%; margin: auto; border-collapse: collapse; text-align: center; border: 1px solid #ddd;"><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/accounting/account</td><td style="direction: ltr; padding: 10px;">AccountingController@accountStore</td></tr></tbody></table>

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

این متد وظیفه ثبت یک حساب بانکی یا صندوق جدید در سیستم را بر عهده دارد. برخلاف متد نمایش، این متد داده‌های دریافت شده از کلاینت را به فرمت عددی و دیتابیسی تبدیل (Reverse Mapping) می‌کند.

<div id="bkmrk-%D8%AA%D9%88%D9%84%DB%8C%D8%AF-%D8%B3%D8%B1%DB%8C%D8%A7%D9%84-%28serial-" style="direction: rtl; font-family: Vazir,Tahoma; text-align: justify; line-height: 1.85;">- **تولید سریال (Serial Generation):**   
    شناسه سریال حساب به صورت خودکار توسط تابع کمکی `StaticController::getSerialId` بر اساس نوع موجودیت ("account") و شعبه مربوطه تولید می‌شود.
- **تبدیل داده‌ها (Data Mapping):**
    - **نوع حساب:** ورودی `cash` به `2` و سایر مقادیر به `1` تبدیل می‌شوند.
    - **ارز:** ورودی `rials` به `0` و سایر مقادیر به `1` تبدیل می‌شوند.
    - **وضعیت‌ها:** فیلدهای بولین (مانند `check`, `pos`, `online`) در صورت وجود یا true بودن به `1` و در غیر این صورت به `null` تبدیل می‌شوند.
- **ذخیره‌سازی (Database Insert):**   
    داده‌ها در جدول `accounting_accounts` درج می‌شوند. تاریخ ایجاد و ویرایش نیز با زمان فعلی سرور تنظیم می‌شود.

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

ساختار جیسون ارسالی باید به شکل زیر باشد:

```
{
    "branch": 2,               // شناسه شعبه
    "bank": 12,                // شناسه بانک از لیست بانک‌ها
    "account_number": "123456",// شماره حساب
    "card": "6037...",         // شماره کارت (اختیاری)
    "sheba": "IR00...",        // شماره شبا (اختیاری)
    "type": "bank",            // نوع: "bank" یا "cash"
    "currency": "rials",       // ارز: "rials" یا "currency"
    "check": true,             // آیا دسته چک دارد؟
    "status": 1,               // وضعیت فعال/غیرفعال
    "branch": {                // آبجکت اطلاعات شعبه
        "code": "101",
        "title": "مرکزی"
    },
    "pos": {                   // تنظیمات پوز
        "status": true,
        "code": "990011"       // سریال پوز
    },
    "gateway": {               // تنظیمات درگاه آنلاین
        "status": false,
        "data": null
    }
}
```

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

#### موفقیت (Success):

```
{
    "status": true,
    "time": 1715772000
}
```

#### خطا (Error):

در صورت بروز خطای سیستمی (مثلاً دیتابیس یا فرمت داده):

```
{
    "status": false,
    "time": 1715772005,
    "code": 0,
    "message": "SQLSTATE[23000]: Integrity constraint violation...",
    "trace": [...]
}
```