#P1600
POST /v2/manual-document/update
Route Info
| Method | Endpoint | Controller |
| POST | /v2/manual-document/update | AccountingController@updateManualDocument |
شرح عملکرد (Functionality)
این مسیر برای ایجاد (add) یا ویرایش (update) یک سند دستی (Manual Document) استفاده میشود. روش کار متد بطور خلاصه:
- ابتدا تاریخ ورودی با تنظیمات «پایان دوره مالی» در
office_configمقایسه میشود. - اگر تاریخ سند در بازه بسته مالی باشد، عملیات متوقف و پیام خطا بازگردانده میشود.
- در حالت
action = add:- محاسبه سال مالی از تاریخ سند
- محاسبه سریال جدید سند دستی با
StaticController::getSerialId() - ثبت رکورد جدید در جدول
manual_documents - ثبت رکوردهای مرتبط در جدول
pays
- در حالت
action = update:- بهروزرسانی رکورد سند دستی
- بهروزرسانی موارد موجود در جدول
paysیا افزودن موارد جدید - حذف رکوردهای پرداختی که در
data_deleteآمدهاند
در هر دو حالت، ثبت لاگ در SystemLog انجام میشود.
پارامترهای ورودی (JSON Body)
ساختار کلی
{
"action": "add | update",
"id": 15, // فقط در حالت update
"date": "1403-05-20",
"description": "سند دستی",
"status": 3,
"currency": 1,
"currency_fee": 0,
"sub_serial": null,
"data": [
{
"preference": "colleague-42",
"moeen": "moeen-18",
"credit": "0",
"debit": "250000",
"description": "توضیحات"
}
],
"data_delete": [ ... ] // فقط در حالت update
}
توضیحات پارامترهای کلیدی
- action: تعیین نوع عملیات. مقدار
addبرای ایجاد سند جدید وupdateبرای ویرایش. - data[]: آرایه خطوط حسابداری. هر خط شامل:
- preference: ترکیب نوع و شناسه؛ مثال:
colleague-42 - moeen: کد معین (با یا بدون پیشوند)
- credit / debit: مبالغ با کاراکترهای فارسی/انگلیسی، که به عدد انگلیسی تبدیل میشوند
- description: توضیحات خط سند
- preference: ترکیب نوع و شناسه؛ مثال:
- data_delete: لیست id پرداختهایی که باید حذف شوند.
خروجی موفق (Success Response)
در حالت ایجاد (add)
{
"status": true,
"time": 1718450000,
"message": "ثبت سند با موفقیت انجام شد. شماره: [3125, 3126]"
}
در حالت ویرایش (update)
{
"status": true,
"time": 1718450000,
"message": "ویرایش سند با موفقیت انجام شد."
}
خروجی خطا (Error Response)
خطا در بازه زمانی بسته مالی
{
"status": false,
"time": 1718450000,
"type": "danger",
"code": 5007,
"message": "ثبت و ویرایش سند دستی در بازه زمانی بسته شده امکان پذیر نمیباشد..."
}
خطاهای دیتابیس (Insert/Update)
{
"status": false,
"time": 1718450000,
"code": 5006,
"message": "SQL error message...",
"trace": [ ... ]
}