مدیریت چک‌ها

مستندات پروژه امیر، نرم‌افزار آزاد حسابداری لاراول.

مدیریت چک‌ها

English فارسی

بخش چک برای مدیریت چک‌های دریافتنی، پرداختنی و تضمینی استفاده می‌شود. چک‌ها با FiscalYearScope به شرکت فعال محدود می‌شوند و طرف حساب و حساب بانکی انتخاب‌شده در فرم‌ها نیز باید متعلق به همان شرکت باشند. تاریخ‌ها در پایگاه داده به‌صورت میلادی ذخیره می‌شوند و ورود و نمایش آن‌ها با تاریخ جلالی انجام می‌شود.

چاپ چک و بازگردانی عملیات چرخه عمر در پیاده‌سازی فعلی وجود ندارند. عملیات انجام‌شده قابل بازگردانی نیست و درخواست یک انتقال نامعتبر، از جمله revert، رد می‌شود.

داده‌ها و اعتبارسنجی

جهت (دریافتنی یا پرداختنی)، کاربرد و وضعیت چک با enum عددی App\Enums\ChequeType نمایش داده می‌شوند و در ستون‌های معمولی SMALLINT ذخیره می‌شوند، نه در ستون ENUM پایگاه داده. متدهای directions()، purposes() و statuses() زیرمجموعه معتبر هر فیلد را برمی‌گردانند.

ثبت چک به نوع عملیات (دریافت یا صدور)، کاربرد، طرف حساب، مبلغ مثبت، تاریخ صدور، تاریخ سررسید و شناسه صیادی یکتای ۱۶ رقمی نیاز دارد. تاریخ سررسید نمی‌تواند پیش از تاریخ صدور باشد و شماره چک و سریال اختیاری هستند. برای چک صادرشده (پرداختنی)، حساب بانکی هنگام ثبت الزامی است؛ حساب بانکی مقصد چک دریافت‌شده (دریافتنی) هنگام واگذاری به بانک انتخاب می‌شود.

چک پرداختنی می‌تواند به‌صورت اختیاری به دسته‌چکی متعلق به حساب بانکی انتخاب‌شده متصل شود. چک دریافتنی نمی‌تواند به دسته‌چک متصل شود.

دریافت و صدور چک

در بالای فهرست چک‌ها دو دکمه مستقل دریافت چک و صدور چک قرار دارد. هر دو دکمه همان فرم و مسیر ثبت را باز می‌کنند و نوع عملیات انتخاب‌شده را در مقدار direction فرم قرار می‌دهند. فرم عمداً انتخاب‌گر نمایان برای نوع چک ندارد تا کاربر هنگام ورود اطلاعات، جریان دریافت و صدور را با یکدیگر جابه‌جا نکند.

فرم دریافت چک فقط فیلدهای مشترک چک را نمایش می‌دهد. فرم صدور چک علاوه بر آن‌ها، بخش حساب بانکی و دسته‌چک اختیاری را نمایش می‌دهد. هنگام ویرایش چک، فرم نوع اولیه آن را حفظ می‌کند و کنترلی برای تغییر نوع نمایش نمی‌دهد. عنوان فرم و دکمه ثبت نیز عملیات فعال را مشخص می‌کنند.

طرف حساب باید سرفصل حسابداری داشته باشد. تنظیمات زیر در سطح شرکت، سرفصل‌های مورداستفاده در ثبت‌های چک را مشخص می‌کنند. سرفصل‌های اولیه با کدهای پیش‌فرض زیر ایجاد می‌شوند، اما مدیر می‌تواند هر تنظیم را به سرفصلی با کد متفاوت متصل کند:

کلید تنظیم کد پیش‌فرض سرفصل
cheque_documents_receivable 013001 اسناد دریافتنی
cheque_documents_in_collection 014001 اسناد در جریان وصول
cheque_documents_payable 020001 اسناد پرداختنی

هر حساب بانکی مورداستفاده برای وصول نیز باید سرفصل حسابداری اختصاصی داشته باشد.

دسته‌چک‌ها

دسته‌چک‌ها به شرکت فعال محدود هستند و هر دسته‌چک به یک حساب بانکی تعلق دارد. هر رکورد شامل پیشوند سریال اختیاری، شماره اولین و آخرین برگ، شماره برگ بعدی و توضیحات اختیاری است. شماره برگ بعدی به‌طور پیش‌فرض برابر اولین برگ است.

صفحات دسته‌چک، بازه برگ‌ها، برگ بعدی و تعداد چک‌های متصل را نمایش می‌دهند. پس از اتصال یک چک، حساب بانکی دسته‌چک قابل تغییر نیست. حذف دسته‌چک، چک‌های آن را حفظ می‌کند و مقدار chequebook_id آن‌ها را null قرار می‌دهد.

انتخاب دسته‌چک در فرم چک پرداختنی، مقدار فعلی next_leaf را به‌طور خودکار به‌عنوان شماره چک تخصیص می‌دهد و next_leaf را به‌صورت اتمیک افزایش می‌دهد. این کار شماره چک واردشده در فرم را بازنویسی می‌کند. پس از تخصیص آخرین برگ، مقدار برگ بعدی یک واحد از انتهای بازه بیشتر می‌شود و ثبت چک دیگری از آن دسته‌چک تا زمان اصلاح بازه یا مقدار برگ بعدی رد خواهد شد.

چرخه عمر

فقط عملیات برگردانده‌شده توسط Cheque::availableActions() پذیرفته می‌شوند.

جهت/کاربرد وضعیت فعلی عملیات مجاز وضعیت نتیجه
دریافتنی تسویه‌ای registered deposit deposited
دریافتنی تسویه‌ای registered endorse endorsed
دریافتنی تسویه‌ای registered return returned
دریافتنی تسویه‌ای deposited clear cleared
دریافتنی تسویه‌ای deposited bounce bounced
دریافتنی تسویه‌ای bounced deposit deposited
دریافتنی تسویه‌ای bounced return returned
پرداختنی تسویه‌ای issued clear cleared
پرداختنی تسویه‌ای issued bounce bounced
پرداختنی تسویه‌ای issued cancel cancelled
پرداختنی تسویه‌ای bounced cancel cancelled
تضمین دریافتی guarantee_received execute registered
تضمین پرداختی guarantee_given execute issued
هر نوع تضمین وضعیت تضمینی cancel cancelled

اجرای چک تضمینی، کاربرد آن را از guarantee به settlement تغییر می‌دهد، سند اولیه تسویه را ایجاد می‌کند و چک را وارد چرخه دریافتنی یا پرداختنی متناظر می‌کند. ثبت یا ابطال چک تضمینی سند حسابداری ایجاد نمی‌کند.

هر ثبت یا تغییر وضعیت، یک ردیف ChequeHistory شامل وضعیت قبلی و جدید، کاربر، توضیحات و سند حسابداری یا پرداخت مرتبط ایجاد می‌کند. به‌روزرسانی و تغییر وضعیت با قفل‌کردن ردیف چک و مقایسه مقدار version، تغییرات هم‌زمان را رد می‌کنند.

اطلاعات اصلی چک فقط تا پیش از اولین عملیات چرخه عمر قابل ویرایش است. ویرایش، سند حسابداری اولیه و پرداخت متصل به فاکتور را در یک تراکنش پایگاه داده بازسازی می‌کند. حذف چک در هر وضعیتی مجاز است و تاریخچه‌ها، پرداخت‌های متصل به چک و همه اسناد ایجادشده توسط چک را به‌صورت تراکنشی حذف می‌کند؛ سپس وضعیت فاکتورهای مرتبط دوباره محاسبه می‌شود.

ثبت‌های حسابداری

در FreeAmir مقدار منفی بدهکار و مقدار مثبت بستانکار است. همه اسناد چک با DocumentService ایجاد، موازنه و تأیید می‌شوند.

رویداد بدهکار بستانکار
دریافت چک تسویه‌ای اسناد دریافتنی پیکربندی‌شده طرف حساب اصلی
واگذاری چک دریافتنی به بانک اسناد در جریان وصول پیکربندی‌شده اسناد دریافتنی پیکربندی‌شده
وصول چک دریافتنی سرفصل حساب بانکی اسناد در جریان وصول پیکربندی‌شده
برگشت چک واگذارشده اسناد دریافتنی پیکربندی‌شده اسناد در جریان وصول پیکربندی‌شده
خرج یا انتقال چک دریافتنی سرفصل انتقال‌گیرنده اسناد دریافتنی پیکربندی‌شده
استرداد چک دریافتنی طرف حساب اصلی اسناد دریافتنی پیکربندی‌شده
صدور چک تسویه‌ای طرف حساب اصلی اسناد پرداختنی پیکربندی‌شده
پاس‌شدن چک صادرشده اسناد پرداختنی پیکربندی‌شده سرفصل حساب بانکی
برگشت چک صادرشده اسناد پرداختنی پیکربندی‌شده طرف حساب اصلی
ابطال چک صادرشده اسناد پرداختنی پیکربندی‌شده طرف حساب اصلی
اجرای تضمین دریافتی اسناد دریافتنی پیکربندی‌شده طرف حساب اصلی
اجرای تضمین پرداختی طرف حساب اصلی اسناد پرداختنی پیکربندی‌شده

ابطال چک پرداختنی که قبلاً برگشت خورده است سند دیگری ایجاد نمی‌کند، زیرا عملیات برگشت، ثبت صدور را خنثی کرده است. وصول و انتقال چک یک Payment متصل از طریق payments.cheque_id ایجاد می‌کنند؛ واگذاری به بانک، برگشت، استرداد، ابطال و اجرای تضمین پرداخت ایجاد نمی‌کنند.

تسویه فاکتور

فاکتور تأییدشده یا نیمه‌پرداخت‌شده را می‌توان از صفحه جزئیات آن با ثبت چک تسویه کرد:

  • فاکتور فروش و برگشت از خرید، چک دریافتنی ایجاد می‌کنند.
  • فاکتور خرید و برگشت از فروش، چک پرداختنی ایجاد می‌کنند.
  • طرف چک همان طرف حساب فاکتور است و چک تضمینی نمی‌تواند فاکتور را تسویه کند.
  • مبلغ چک نمی‌تواند از مانده فاکتور بیشتر باشد و تاریخ صدور چک نمی‌تواند پیش از تاریخ فاکتور باشد.

سند دریافت یا صدور چک توسط یک Payment متصل به فاکتور و چک استفاده می‌شود؛ بنابراین سند حسابداری تکراری ایجاد نمی‌شود. وصول چک در آینده همچنان یک ثبت مستقل در چرخه عمر چک است.

حذف پرداخت چکی از فاکتور، خود چک، همه پرداخت‌ها و تاریخچه آن و تمام اسناد و تراکنش‌های حسابداری ایجادشده توسط آن چک را حذف می‌کند. پس از پاک‌سازی، وضعیت فاکتور دوباره محاسبه می‌شود. با حذف فاکتور نیز همین پاک‌سازی برای همه چک‌های مورداستفاده در تسویه آن انجام می‌شود. پرداخت‌های غیرچکی فاکتور با آبشار حذف پرداخت فاکتور حذف می‌شوند. حذف مستقیم چک نیز همین پاک‌سازی را انجام می‌دهد و وضعیت فاکتورهای متأثر را دوباره محاسبه می‌کند.

فهرست، گزارش و دسترسی‌ها

فهرست چک‌ها جست‌وجو بر اساس شماره چک، سریال، شناسه صیادی یا طرف حساب و فیلترهای نوع چک، کاربرد، وضعیت، طرف حساب، بازه مبلغ و بازه سررسید را ارائه می‌کند. گزارش چک‌ها تعداد و مبلغ را به تفکیک وضعیت نمایش می‌دهد، چک‌های باز با سررسید ۳۰ روز آینده را فهرست می‌کند و مجموع چک‌های سررسیدگذشته با وضعیت registered، deposited یا issued را نشان می‌دهد. صفحه جزئیات طرف حساب نیز چک‌هایی را نمایش می‌دهد که شخص، طرف اصلی یا انتقال‌گیرنده آن‌ها است.

صفحات چک از دسترسی‌های CRUD در cheques.* و دسترسی‌های cheques.report و cheques.transition استفاده می‌کنند. صفحات دسته‌چک از دسترسی‌های CRUD در chequebooks.* استفاده می‌کنند. جریان پرداخت فاکتور از دسترسی جداگانه invoices.payments.store-cheque استفاده می‌کند.