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.
 
 
 
 

105 lines
5.2 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_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'Формат ввода периода платежей:<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''