پرش به محتویات

روش‌های پرداخت و دریافت (Payment Methods)

۱. مقدمه: روش پرداخت چیست؟

در سیستم ERP تابان، وقتی می‌خواهید پولی را دریافت یا پرداخت کنید، اولین سوال سیستم این است: «چگونه؟» آیا پول نقد است؟ چک است؟ کارت می‌کشید؟ یا حواله اینترنتی می‌زنید؟

موجودیت «روش پرداخت» (Payment Method)، پیکربندی هوشمندی است که رفتار فرم‌های عملیاتی را کنترل می‌کند.

  • اگر روش را «چک» انتخاب کنید -> سیستم فیلدهای "شماره چک" و "تاریخ سررسید" را نشان می‌دهد.
  • اگر روش را «کارت‌خوان» انتخاب کنید -> سیستم فیلد "شماره مرجع تراکنش" را می‌خواهد.

هدف: جلوگیری از شلوغی فرم‌ها و اجباری کردن فیلدهای مرتبط با هر روش.


۲. انواع روش‌های پرداخت (The Core Logic)

قبل از تعریف روش‌ها، باید بدانید که زیرساخت فنی سیستم (Backend) چه رفتارهایی را پشتیبانی می‌کند. فیلد MethodType تعیین‌کننده منطق برنامه است:

نوع روش (فارسی) نام فنی (System Enum) رفتار هوشمند فرم (UI Behavior)
۱. نقد / اسکناس Cash ساده‌ترین حالت. فقط مبلغ را می‌گیرد. متصل به «صندوق‌های نقدی».
۲. چک (صیادی/عادی) Check پیچیده‌ترین حالت. فیلدهای شماره سریال، صیاد، سررسید و بانک را فعال می‌کند. متصل به «دسته چک» یا «صندوق اسناد».
۳. حواله بانکی (فیش/اینترنتی) WireTransfer / EFT فیلدهای شماره پیگیری (Trace No) و تاریخ واریز را اجباری می‌کند. متصل به «حساب بانکی».
۴. کارت‌خوان (POS) POS فیلد شماره مرجع و ترمینال را فعال می‌کند. کارمزد بانکی را محاسبه می‌کند (اگر تنظیم شده باشد).
۵. سفته PromissoryNote شبیه چک است اما منطق صیاد و دسته چک بانکی را ندارد.
۶. خرج چک (واگذاری) Endorsement لیستی از چک‌های موجود در صندوق را باز می‌کند تا یکی را انتخاب کنید (نه اینکه چک جدید بنویسید).

۳. راهنمای تکمیل فرم تعریف روش پرداخت

مسیر دسترسی: خزانه‌داری > تعاریف پایه > روش‌های پرداخت

این فرم توسط مدیر سیستم تنظیم می‌شود تا گزینه‌های در دسترس کاربران را کنترل کند.

عنوان فیلد نام فنی (Technical) نوع داده راهنمای تکمیل و منطق سیستم
کد روش Code String کد کوتاه (مثلاً CHK برای چک، CSH برای نقد).
عنوان روش Name String نامی که کاربر در لیست کشویی می‌بیند.
مثال: صدور چک روز یا کارت‌خوان فروشگاه
نوع رفتار MethodType Enum (حیاتی) مشخص می‌کند که این روش از چه منطقی پیروی می‌کند (طبق جدول بالا).
جهت تراکنش Direction Enum این روش کجا نمایش داده شود؟
Inbound: فقط در دریافت‌ها (مثل کارت‌خوان).
Outbound: فقط در پرداخت‌ها (مثل صدور چک).
Both: در هر دو (مثل نقد یا حواله).
نیاز به شماره پیگیری RequireRefNo Boolean اگر تیک بزنید، کاربر نمی‌تواند بدون وارد کردن "شماره فیش/ارجاع" سند را ذخیره کند.
نیاز به بانک طرف مقابل RequireDestBank Boolean (مخصوص حواله) آیا لازم است بدانیم پول به کدام بانکِ مشتری واریز شده؟
وضعیت IsActive Boolean فعال/غیرفعال.

۴. سناریوهای عملیاتی: تأثیر تنظیمات بر فرم سند

بیایید ببینیم این تنظیمات چطور ظاهر فرم «سند دریافت/پرداخت» را تغییر می‌دهند.

سناریو ۱: پرداخت با چک (Check Issuance)

تنظیمات: روشی به نام «صدور چک» با نوع رفتار Check و جهت Outbound تعریف شده است.

  1. کاربر: وارد فرم سند پرداخت می‌شود.
  2. انتخاب: در لیست روش‌ها، «صدور چک» را انتخاب می‌کند.
  3. تغییر فرم:
    • فیلد "صندوق مبدأ" مخفی می‌شود.
    • فیلد "حساب بانکی" ظاهر می‌شود.
    • فیلد "دسته چک" ظاهر می‌شود.
    • سیستم شماره سریال چک بعدی را پیشنهاد می‌دهد.
    • فیلد "شناسه صیادی" نمایش داده می‌شود.

سناریو ۲: دریافت با کارت‌خوان (POS Receipt)

تنظیمات: روشی به نام «کارت‌خوان ملت» با نوع رفتار POS و جهت Inbound تعریف شده است.

  1. کاربر: وارد فرم سند دریافت می‌شود.
  2. انتخاب: در لیست روش‌ها، «کارت‌خوان ملت» را انتخاب می‌کند.
  3. تغییر فرم:
    • فیلد "حساب بانکی" به صورت خودکار روی "حساب متصل به پوز ملت" قفل می‌شود.
    • فیلد "شماره پیگیری" (RRN) اجباری می‌شود (چون در تنظیمات تیک RequireRefNo را زده‌اید).
    • کاربر باید ۴ رقم آخر کارت مشتری را وارد کند (اختیاری).

سناریو ۳: واریز نقدی (Cash Deposit)

تنظیمات: روشی به نام «نقد» با نوع رفتار Cash تعریف شده است.

  1. کاربر: روش «نقد» را انتخاب می‌کند.
  2. تغییر فرم:
    • تمام فیلدهای بانکی و چک مخفی می‌شوند.
    • فقط فیلد "انتخاب صندوق" (مثلاً صندوق فروشگاه ۱) نمایش داده می‌شود.
    • کاربر فقط مبلغ را وارد می‌کند.

۵. کنترل‌های هوشمند سیستم (System Validations)

این قوانین تضمین می‌کنند که کاربر روش غلطی را انتخاب نکند:

  1. محدودیت نوع حساب:
    • اگر روش پرداخت Check باشد، کاربر فقط می‌تواند حساب‌های بانکی نوع «جاری» (Current) را انتخاب کند. (نمی‌توان از حساب پس‌انداز چک کشید).
  2. اجبار ارجاع:
    • اگر روش پرداخت WireTransfer (حواله) باشد، سیستم اجازه ثبت بدون "شماره پیگیری" را نمی‌دهد.
  3. موجودی چک:
    • در روش Endorsement (خرج چک)، سیستم فقط چک‌هایی را لیست می‌کند که وضعیت آن‌ها «نزد صندوق» است. چک‌های واگذار شده یا برگشتی نمایش داده نمی‌شوند.

۶. پرسش‌های متداول (FAQ)

س: آیا می‌توانم روشی تعریف کنم که همزمان نقد و چک باشد؟

پ: خیر. در هدر سند نمی‌توانید. اما در «جزئیات سند» (Payment Lines) می‌توانید چند ردیف ایجاد کنید.

  • ردیف ۱: ۱۰ میلیون تومان -> روش: نقد
  • ردیف ۲: ۲۰ میلیون تومان -> روش: چک
  • سیستم جمع این‌ها را به عنوان مبلغ کل سند در نظر می‌گیرد.

س: روش «تهاتر» (Clearing) چگونه تعریف می‌شود؟

پ: تهاتر معمولاً جریان نقدینگی ندارد. اما اگر می‌خواهید در این فرم باشد، می‌توانید روشی با نوع Journal / Adjustment تعریف کنید که به جای بانک/صندوق، یک حساب واسط را درگیر کند. (هرچند توصیه می‌شود تهاتر در فرم "تسویه حساب" انجام شود نه اینجا).

س: اگر کارت‌خوان من به دو حساب وصل باشد چه؟

پ: باید دو روش پرداخت تعریف کنید:

  1. کارت‌خوان (حساب ملت)
  2. کارت‌خوان (حساب سامان) این کار باعث می‌شود کاربر در لحظه کشیدن کارت، دقیقاً مشخص کند پول به کدام حساب رفته تا مغایرت بانکی پیش نیاید.

۷. گزارش‌های کلیدی

  • گزارش تفکیکی روش‌ها: چه مقدار از فروش امروز "نقد"، چه مقدار "کارت‌خوان" و چه مقدار "چک" بوده است؟
  • کنترل کارت‌خوان: گزارشی که تراکنش‌های ثبت شده در سیستم با روش POS را لیست می‌کند تا با "ستلمنت" (Settlement) دستگاه پوز مقایسه کنید.
  • چک‌های صادر شده: فیلتر کردن تمام پرداخت‌ها بر اساس روش Check.