# -*- coding: utf-8 -*- from django.db import models from project.customer.models import Client from .base_models import BaseInvoiceModel, BaseItemInvoiceModel from .refs import Currency, Country, Measure from .mixins import SignedStatusFieldMixin, InvoiceFieldMixin class Faktura(BaseInvoiceModel, SignedStatusFieldMixin, InvoiceFieldMixin): """Счёт-фактура""" doc_reason = models.CharField(u'Основание', max_length=256, blank=True, default='') fixes = models.BooleanField(u'Изменения', default=False) avance = models.BooleanField(u'аванс', default=False) currency = models.ForeignKey(Currency, verbose_name=u'валюта', null=True) user_is_sender = models.BooleanField(u'пользователь - отправитель', default=False) sender = models.ForeignKey(Client, related_name='sender_fakturas', blank=True, null=True, verbose_name=u'Отправитель') receiver = models.ForeignKey(Client, related_name='receiver_fakturas', blank=True, null=True, verbose_name=u'Получатель') plat_doc_num = models.CharField(u'Номер платёжного документа', max_length=30, blank=True, default='') plat_doc_date = models.DateField('Дата платёжного документа', blank=True, null=True) fix_doc_num = models.PositiveIntegerField(u'Номер исправления', max_length=30, null=True, blank=True) fix_doc_date = models.DateField('Дата исправления', blank=True, null=True) def get_consignor_and_address(self): """Отправитель и адрес """ if self.user_is_sender: return u'%s, %s' % (self.user.profile.get_company_name(), self.user.profile.address) elif self.sender: return '%s, %s' % (self.sender.name, self.sender.address) else: return u'' def get_receiver_and_address(self): """Получатель и адрес """ if self.receiver: #return self.user return '%s, %s' % (self.receiver.name, self.receiver.address) else: return u'' class Meta(BaseInvoiceModel.Meta): verbose_name = u'Фактура' verbose_name_plural = u'Фактуры' app_label="docs" class FakturaItem(BaseItemInvoiceModel): """Табличная часть фактуры""" units_kod = models.CharField(u'Код единицы измерения', max_length=10) parent = models.ForeignKey(Faktura, related_name='faktura_items') country_code = models.CharField(u'Код страны', max_length=10) country_name = models.CharField(u'Название страны', max_length=256) gtd = models.CharField(u'Основание', max_length=256, blank=True, default='') ntd = models.CharField(u'Номер транспортной декларации', max_length=256, blank=True, default='') #measure = models.ForeignKey(Measure, related_name='m_faktura_items') class Meta(BaseItemInvoiceModel.Meta): verbose_name = u'Табл. часть фактуры' verbose_name_plural = u'Табл. части фактур' app_label="docs" #class PlatDoc(models.Model): # """Платёжные документы""" # parent = models.ForeignKey(Faktura, related_name='plat_docs') # num = models.CharField(u'Номер', max_length=30) # doc_date = models.DateField('Дата') # # class Meta: # verbose_name = u'Платёжный документ' # verbose_name_plural = u'Платёжные документы' # app_label="docs"