# coding=utf-8 from django.conf import settings from django.db import models from yandex_money.models import Payment from course_service.courses.models import Course, Vertex class Bill(models.Model): route = models.CharField(max_length=15, verbose_name='Токен роута') user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='Плательщик', related_name='bill_user') opener = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='Ответственный сотрудник', null=True) comment = models.TextField(verbose_name='Комментарий продавца', help_text='Будет показано пользователю', blank=True, editable=False) description = models.TextField(verbose_name='Внутренняя заметка', blank=True) def __str__(self): return '%s: %s' % (self.id, self.user) def get_full_price(self): return sum([i.price for i in self.invoice_set.all()]) class Meta: verbose_name = 'Счет' verbose_name_plural = 'Счета' unique_together = ( ('route', 'user',), ) class Invoice(models.Model): BILL_METHOD = ( ('C', 'Наличные'), ('H', 'JustClick'), ('A', 'Альфа-Банк'), ('S', 'SimplePay'), ('Y', 'YandexKassa') ) BILL_STATUSES = ( ('W', 'Ожидание согласия'), ('P', 'На оплате'), ('F', 'Оплачен'), ('C', 'Отклонен'), ) status = models.CharField(verbose_name='Статус', max_length=1, default='W', choices=BILL_STATUSES) price = models.IntegerField(verbose_name='Сумма', editable=False, null=True, blank=True) real_price = models.IntegerField(verbose_name='Полученная сумма', null=True, blank=True, help_text='Сумма, минус комиссия', editable=False) method = models.CharField(verbose_name='Способ оплаты', max_length=2, default='Y', choices=BILL_METHOD) key = models.CharField(verbose_name='Ключ платежа', max_length=255, unique=True, editable=False, blank=True) yandex_pay = models.OneToOneField(to=Payment, blank=True, null=True) comment = models.TextField(verbose_name='Комментарий продавца', help_text='Будет показано пользователю', blank=True, editable=False) bill = models.ForeignKey(to=Bill, verbose_name="Связный счёт") is_open = models.BooleanField(default=True, verbose_name="Открывает ли платёж курс") date = models.DateTimeField(auto_now_add=True) def __str__(self): return '%s:%s %s' % (self.id, self.get_status_display(), self.bill.user) class Meta: verbose_name = 'Платёж' verbose_name_plural = 'Платежи'