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.
 
 
 
 

89 lines
3.4 KiB

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