# -*- coding: utf-8 -*- from django.db import models from project.customer.models import BankAccount from .base_models import BaseModel from .. import consts class Platejka(BaseModel): """Платёжное поручение.""" platej_type = models.PositiveSmallIntegerField(u'Тип платёжного поручения', choices=consts.PLATEJ_TYPE_CHOICES, default=consts.PLATEJ_TYPE_COMMERCE) bank_account = models.ForeignKey(BankAccount, related_name='+', verbose_name=u'Расчётный счёт') doc_total = models.DecimalField(u'Сумма', max_digits=10, decimal_places=2) payment_type = models.PositiveSmallIntegerField(u'Вид платежа', choices=consts.PAYMENT_TYPE_CHOICES, default=consts.PAYMENT_TYPE_CHOICES[0][0]) payment_order = models.CharField(u'Очерёдность платежа', max_length=10) doc_info = models.TextField(u'Назначение платежа', max_length=1000) # поля только для перевода денег (коммерческое) nds_type = models.PositiveSmallIntegerField(u'НДС', choices=consts.NDS_TYPE_CHOICES, default=consts.NDS_TYPE_NO) nds_value = models.PositiveSmallIntegerField(u'Ставка НДС', choices=consts.NDS_VALUE_CHOICES, default=consts.NDS_VALUE_0) # поля только для оплаты налогов (налоговое) tax_status = models.CharField(u'Статус составителя', max_length=10, choices=consts.TAX_STATUS_CHOICES, default=consts.TAX_STATUS_CHOICES[0][0]) tax_base = models.CharField(u'Основание налогового платежа', max_length=10, choices=consts.TAX_BASE, default=consts.TAX_BASE[0][0]) tax_type = models.CharField(u'Тип налогового платежа', max_length=10, choices=consts.TAX_TYPE, default=consts.TAX_TYPE[0][0]) tax_num = models.CharField(u'Номер документа основания', max_length=50, blank=True, default='') tax_date = models.DateField(u'Дата документа основания', blank=True, null=True) tax_bk = models.CharField(u'Код БК доходов РФ', max_length=256) tax_okato = models.CharField(u'Код ОКАТО сборщика платежей', max_length=256) tax_period = models.CharField(u'Период, за который начисляется налог', max_length=256, help_text = (u'Формат ввода периода платежей:
' u'Месячный платёж - "МС.00.0000"
' u'Квартальный платёж - "КВ.00.0000"
' u'Полугодовой платёж - "ПЛ.00.0000"
' u'Годовой платёж - "ГД.00.0000"
' u'Платёж по дате - "дд.мм.гггг"') ) class Meta(BaseModel.Meta): verbose_name = u'Платёжное поручение' verbose_name_plural = u'Платёжные поручения' # хелперы, чтоб не оборачивать в шаблонах каждое обращение к определенным полям в проверку типа платежа def is_commerce(self): return self.platej_type == consts.PLATEJ_TYPE_COMMERCE def is_tax(self): return self.platej_type == consts.PLATEJ_TYPE_TAX def get_tax_status_kod(self): """Налоги. Статус составителя, КОД.""" if self.platej_type == consts.PLATEJ_TYPE_TAX and self.tax_status: return self.tax_status return u'' def get_tax_base_kod(self): """Налоги. Основание налогового платежа, КОД.""" if self.platej_type == consts.PLATEJ_TYPE_TAX and self.tax_base: return self.tax_base return u'' def get_tax_type_kod(self): """Налоги. Тип налогового платежа, КОД.""" if self.platej_type == consts.PLATEJ_TYPE_TAX and self.tax_type: return self.tax_type return u'' def get_tax_num(self): """Налоги. Номер документа основания.""" if self.platej_type == consts.PLATEJ_TYPE_TAX and self.tax_num: return self.tax_num return u'' def get_tax_date(self): """Налоги. Дата документа основания.""" if self.platej_type == consts.PLATEJ_TYPE_TAX and self.tax_date: return self.tax_date return u'' def get_tax_bk(self): """Налоги. Код БК доходов РФ.""" if self.platej_type == consts.PLATEJ_TYPE_TAX and self.tax_bk: return self.tax_bk return u'' def get_tax_okato(self): """Налоги. Код ОКАТО сборщика платежей.""" if self.platej_type == consts.PLATEJ_TYPE_TAX and self.tax_okato: return self.tax_okato return u'' def get_tax_period(self): """Налоги. Период, за который начисляется налог.""" if self.platej_type == consts.PLATEJ_TYPE_TAX and self.tax_period: return self.tax_period return u''