+ این سوال سیستم داوری ندارد و پس از مسابقه توسط تیم شرکت «تومن» بررسی میشود.
+ برای استخدام در این شرکت بسیار توصیه میشود این سوال را حل کنید، اما تاثیری روی رتبهی شما و جایزهی مسابقه ندارد.
---
در این سوال توانایی مدلسازی شما سنجیده میشود. در پروژهی زیر مدلسازی یک سامانه پرداخت آنلاین را میبینید.
```python
from django.db import models
class User(models.Model):
username = models.CharField(max_length=100, unique=True)
balance = models.PositiveIntegerField(default=0)
class Merchant(models.Model):
balance = models.IntegerField(default=0)
class Transaction(models.Model):
TYPE_CHOICES = (
(1, 'shopping'),
(2, 'subscription'),
(3, 'rent'),
(4, 'bill'),
(5, 'loan'),
(6, 'donation')
)
type = models.IntegerField(db_index=True, choices=TYPE_CHOICES)
payer = models.ForeignKey('User', related_name='payments', on_delete=models.PROTECT)
payee = models.ForeignKey('Merchant', related_name='receipts', on_delete=models.PROTECT)
amount = models.PositiveIntegerField()
```
[لینک دانلود فایل کد](https://quera.ir/qbox/download/khVg5v5PMX/quera_question.py)
در سامانهی توصیف شده تعدادی کاربر خریدار و تعدادی فروشنده وجود دارد، و تعدادی تراکنش که بین یک فروشنده و یک خریدار صورت میگیرد. اولین کاری که باید بکنید این است که با مشاهدهی مدل، اهداف بخشهای آن را خودتان متوجه شوید!
حال ما میخواهیم قابلیت امکان تخفیف را به نوع `bill` از تراکنش در سامانه اضافه کنیم. یعنی تنها تراکنشهایی که از نوع `bill` هستند قرار است بتوانند تخفیف داشته باشند، و در نهایت قرار است این امکان کاملا پیادهسازی شود و در سامانه استفاده شود.
شما باید مدلهای سامانهی جدید را طراحی کنید. برای این طراحی برای هر تغییری کاملا آزاد هستید؛ شما میتوانید مدلهای فعلی را تغییر دهید و همچنین شما میتوانید هر چند مدلی که خواستید به آن اضافه کنید.
در کنار تغییراتی که میدهید، در صورت نیاز، توضیحی راجع به دلیل آن نیز بنویسید. این توضیحات را هم در کنار کدتان ارسال کنید. میتوانید این توضیحات را در کد بصورت کامنت بنویسید، و یا در فایلی جداگانه قرار دهید.
در نهایت یک فایل *zip* که شامل موارد گفته شده است برای این سوال ارسال کنید. برای ساختار فایل *zip* ارسالی و موارد داخل آن نیز محدودیتی ندارید.