You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
5.1 KiB
104 lines
5.1 KiB
# -*- 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_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'Формат ввода периода платежей:<br />'
|
|
u'Месячный платёж - "МС.00.0000"<br />'
|
|
u'Квартальный платёж - "КВ.00.0000"<br />'
|
|
u'Полугодовой платёж - "ПЛ.00.0000"<br />'
|
|
u'Годовой платёж - "ГД.00.0000"<br />'
|
|
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''
|
|
|