# -*- 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)