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