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.
75 lines
3.6 KiB
75 lines
3.6 KiB
# -*- 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"
|
|
|