3 KiB
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,000,000 ریال
- خط اصلی: بانک بدهکار 1,000,000 ریال
- خط کارمزد: بانک بستانکار 5,000 ریال (کم شدن کارمزد)
- خط کارمزد: کارمزد خدمات بانکی بدهکار 5,000 ریال (اضافه شدن کارمزد)
مجموع: شخص = 1,000,000 ریال، بانک = 995,000 ریال، کارمزد خدمات بانکی = 5,000 ریال ✅