hesabixArc/docs/COMMISSION_IMPLEMENTATION.md
2025-10-15 21:21:11 +03:30

3 KiB

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

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

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 ریال