arc/docs/COMMISSION_IMPLEMENTATION.md
2026-04-14 19:34:55 +03:30

3 KiB
Executable file

پیاده‌سازی کارمزد در بخش دریافت و پرداخت

تغییرات اعمال شده

1. سرویس دریافت و پرداخت (receipt_payment_service.py)

تغییرات اصلی:

  • محاسبه مجموع کارمزدها: مجموع کارمزدهای همه تراکنش‌ها محاسبه می‌شود
  • ایجاد خطوط کارمزد جداگانه: برای هر کارمزد، دو خط جداگانه ایجاد می‌شود:
    • خط کارمزد برای حساب (بانک/صندوق/تنخواهگردان)
    • خط کارمزد برای حساب کارمزد خدمات بانکی (کد 70902)

منطق کارمزد:

در دریافت (Receipt):

  • کارمزد از حساب بانک/صندوق/تنخواهگردان کم می‌شود (Credit)
  • کارمزد به حساب کارمزد خدمات بانکی اضافه می‌شود (Debit)

در پرداخت (Payment):

  • کارمزد به حساب بانک/صندوق/تنخواهگردان اضافه می‌شود (Debit)
  • کارمزد از حساب کارمزد خدمات بانکی کم می‌شود (Credit)

کدهای حساب:

  • بانک: 10203
  • صندوق: 10202
  • تنخواهگردان: 10201
  • چک دریافتی: 10403
  • چک پرداختی: 20202
  • کارمزد خدمات بانکی: 70902

2. نمایش خطوط کارمزد

در تابع document_to_dict:

  • خطوط کارمزد با فلگ is_commission_line: true تشخیص داده می‌شوند
  • خطوط کارمزد همیشه در account_lines نمایش داده می‌شوند

نحوه استفاده

فرانت‌اند:

// در InvoiceTransaction
final transaction = InvoiceTransaction(
  // ... سایر فیلدها
  commission: 5000, // کارمزد به ریال
);

API:

{
  "account_lines": [
    {
      "transaction_type": "bank",
      "amount": 1000000,
      "commission": 5000,
      "bank_id": "123"
    }
  ]
}

نتیجه

✅ کارمزد از فرانت به سرور ارسال می‌شود ✅ کارمزد به عنوان سطر جداگانه در document_lines ثبت می‌شود ✅ کارمزد برای بانک، صندوق و تنخواهگردان به صورت جداگانه ثبت می‌شود ✅ کارمزد در حساب کارمزد خدمات بانکی (کد 70902) ثبت می‌شود ✅ تعادل حسابداری حفظ می‌شود

مثال عملی

دریافت 1,000,000 ریال از شخص با کارمزد 5,000 ریال:

  1. خط اصلی: شخص بستانکار 1,000,000 ریال
  2. خط اصلی: بانک بدهکار 1,000,000 ریال
  3. خط کارمزد: بانک بستانکار 5,000 ریال (کم شدن کارمزد)
  4. خط کارمزد: کارمزد خدمات بانکی بدهکار 5,000 ریال (اضافه شدن کارمزد)

مجموع: شخص = 1,000,000 ریال، بانک = 995,000 ریال، کارمزد خدمات بانکی = 5,000 ریال ✅