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.
54 lines
2.6 KiB
54 lines
2.6 KiB
# -*- coding: utf-8 -*-
|
|
from decimal import Decimal
|
|
|
|
from django.db import models
|
|
|
|
from .base_models import BaseModel, VeryBaseModel
|
|
from .mixins import SignedStatusFieldMixin
|
|
|
|
|
|
class AktSverki(BaseModel, SignedStatusFieldMixin):
|
|
"""Акт сверки."""
|
|
doc_mesto = models.CharField(u'Место подписания', max_length=256, help_text=u'(Например, г. Москва)')
|
|
# период
|
|
start_date = models.DateField('С')
|
|
end_date = models.DateField('По')
|
|
# входящее сальдо
|
|
saldo_debit = models.DecimalField(u'Дебетовое', max_digits=10, decimal_places=2, blank=True) # , default=Decimal('0.00'))
|
|
saldo_credit = models.DecimalField(u'Кредитовое', max_digits=10, decimal_places=2, blank=True) # , default=Decimal('0.00'))
|
|
|
|
# вычисляемые поля - обновляются при сохранении записей табличной части
|
|
total_debit = models.DecimalField(u'Общее дебетовое сальдо', max_digits=10, decimal_places=2, blank=True,
|
|
default=Decimal('0.00'))
|
|
total_credit = models.DecimalField(u'Общее кредитовое сальдо', max_digits=10, decimal_places=2, blank=True,
|
|
default=Decimal('0.00'))
|
|
total_saldo = models.DecimalField(u'Итоговое сальдо', max_digits=10, decimal_places=2, blank=True,
|
|
default=Decimal('0.00'))
|
|
|
|
class Meta(BaseModel.Meta):
|
|
verbose_name = u'Акт сверки'
|
|
verbose_name_plural = u'Акты сверки'
|
|
|
|
def save(self, *args, **kwargs):
|
|
if not self.saldo_debit: self.saldo_debit = 0
|
|
if not self.saldo_credit: self.saldo_credit = 0
|
|
super(AktSverki, self).save(*args, **kwargs)
|
|
|
|
|
|
class AktSverkiItem(VeryBaseModel):
|
|
"""Табличная часть акта сверки."""
|
|
parent = models.ForeignKey(AktSverki, related_name='aktsverki_items')
|
|
|
|
name = models.CharField(u'Наименование операции, документы', max_length=256)
|
|
debit = models.DecimalField(u'Дебет', max_digits=10, decimal_places=2, blank=True)
|
|
credit = models.DecimalField(u'Кредит', max_digits=10, decimal_places=2, blank=True)
|
|
|
|
class Meta(VeryBaseModel.Meta):
|
|
verbose_name = u'Табл. часть акта сверки'
|
|
verbose_name_plural = u'Табл. части актов сверки'
|
|
ordering = ('created_at',)
|
|
|
|
def save(self, *args, **kwargs):
|
|
if not self.debit: self.debit = 0
|
|
if not self.credit: self.credit = 0
|
|
super(AktSverkiItem, self).save(*args, **kwargs)
|
|
|