@ -89,8 +89,18 @@ class UserProfile(models.Model):
fax_code = models . CharField ( u ' Код города ' , max_length = 10 , blank = True , default = ' ' )
fax = models . CharField ( u ' Номер телефона ' , max_length = 20 , blank = True , default = ' ' )
email = models . EmailField ( u ' Электронная почта ' , max_length = 75 , blank = True , default = ' ' )
site = models . CharField ( u ' Сайт ' , max_length = 256 , blank = True , default = ' ' )
email = models . EmailField (
' Электронная почта ' ,
max_length = 75 ,
blank = True ,
default = ' '
)
site = models . CharField (
' Сайт ' ,
max_length = 256 ,
blank = True ,
default = ' '
)
# поля, только для ИП
svid_gos_reg = models . CharField (
@ -104,8 +114,12 @@ class UserProfile(models.Model):
ip_reg_date = models . DateField ( u ' Дата регистрации ИП ' , blank = True , null = True )
# поля, только для Организации
name = models . CharField ( u ' Краткое название организации ' , max_length = 256 , default = ' ' ,
help_text = u ' Будет подставляться в создаваемые документы. ' )
name = models . CharField (
' Краткое название организации ' ,
max_length = 256 ,
default = ' ' ,
help_text = u ' Будет подставляться в создаваемые документы. '
)
full_name = models . CharField (
' Полное название организации ' ,
max_length = 256 ,
@ -116,26 +130,57 @@ class UserProfile(models.Model):
kpp = models . CharField ( u ' КПП ' , max_length = 9 , default = ' ' )
boss_title = models . CharField ( u ' Должность руководителя ' , max_length = 256 , blank = True , default = ' ' )
na_osnovanii = models . CharField ( u ' Действует на основании ' , max_length = 256 , blank = True , default = ' ' )
boss_title = models . CharField (
u ' Должность руководителя ' ,
max_length = 256 ,
blank = True ,
default = ' '
)
na_osnovanii = models . CharField (
u ' Действует на основании ' ,
max_length = 256 ,
blank = True ,
default = ' '
)
# подписи, печать и логотип
boss_sign = models . ImageField ( u ' Подпись руководителя ' , blank = True , default = ' ' ,
upload_to = UploadAndRename ( PROFILE_IMAGES_UPLOAD_DIR , ' boss_sign.png ' ) )
glavbuh_sign = models . ImageField ( u ' Подпись бухгалтера ' , blank = True , default = ' ' ,
upload_to = UploadAndRename ( PROFILE_IMAGES_UPLOAD_DIR , ' glavbuh_sign.png ' ) )
stamp = models . ImageField ( u ' Печать ' , blank = True , default = ' ' ,
upload_to = UploadAndRename ( PROFILE_IMAGES_UPLOAD_DIR , ' stamp.png ' ) )
logo = models . ImageField ( u ' Логотип ' , blank = True , default = ' ' ,
upload_to = UploadAndRename ( PROFILE_IMAGES_UPLOAD_DIR , ' logo.png ' ) )
boss_sign = models . ImageField (
' Подпись руководителя ' ,
blank = True ,
default = ' ' ,
upload_to = UploadAndRename ( PROFILE_IMAGES_UPLOAD_DIR , ' boss_sign.png ' )
)
glavbuh_sign = models . ImageField (
u ' Подпись бухгалтера ' ,
blank = True ,
default = ' ' ,
upload_to = UploadAndRename ( PROFILE_IMAGES_UPLOAD_DIR , ' glavbuh_sign.png ' )
)
stamp = models . ImageField (
u ' Печать ' ,
blank = True ,
default = ' ' ,
upload_to = UploadAndRename ( PROFILE_IMAGES_UPLOAD_DIR , ' stamp.png ' )
)
logo = models . ImageField (
' Логотип ' ,
blank = True ,
default = ' ' ,
upload_to = UploadAndRename ( PROFILE_IMAGES_UPLOAD_DIR , ' logo.png ' )
)
created_at = models . DateTimeField ( u ' Создан ' , auto_now_add = True )
updated_at = models . DateTimeField ( u ' Изменен ' , auto_now = True )
active = models . BooleanField ( u ' Активен ' , default = False )
confirmed = models . BooleanField ( u ' Подтверждён ' , default = False )
user_session_key = models . CharField ( u ' Ключ сессии (служебная информация) ' , max_length = 256 , blank = True , default = ' ' ,
help_text = u ' Руками не трогать... ' )
user_session_key = models . CharField (
u ' Ключ сессии (служебная информация) ' ,
max_length = 256 ,
blank = True ,
default = ' ' ,
help_text = u ' Руками не трогать... '
)
objects = managers . UserProfileManager ( )
@ -219,7 +264,9 @@ class UserProfile(models.Model):
return self . kpp == ' '
def get_company_name ( self ) :
""" `ИП ФИО` или `Название Организации`. """
"""
` ИП ФИО ` или ` Название Организации ` .
"""
if self . profile_type == consts . IP_PROFILE :
return u ' ИП %s ' % self . get_boss_full_fio ( )
elif self . profile_type == consts . ORG_PROFILE :
@ -255,12 +302,14 @@ class UserProfile(models.Model):
def get_glavbuh_fio ( self ) :
""" Фамилия и инициалы главного бухгалтера. """
if self . glavbuh_surname and self . glavbuh_name and self . glavbuh_midname :
return ( u ' %s %s . %s . ' % ( self . glavbuh_surname , self . glavbuh_name [ 0 ] , self . glavbuh_midname [ 0 ] , ) ) . strip ( )
return ( u ' %s %s . %s . ' % ( self . glavbuh_surname , self . glavbuh_name [ 0 ] ,
self . glavbuh_midname [ 0 ] , ) ) . strip ( )
return u ' '
def get_glavbuh_full_fio ( self ) :
""" Полное ФИО главного бухгалтера. """
return ( u ' %s %s %s ' % ( self . glavbuh_surname , self . glavbuh_name , self . glavbuh_midname , ) ) . strip ( )
return ( u ' %s %s %s ' % ( self . glavbuh_surname , self . glavbuh_name ,
self . glavbuh_midname , ) ) . strip ( )
def get_full_phone ( self ) :
""" (Код города) Номер телефона. """
@ -297,7 +346,12 @@ class BankAccount(models.Model):
bik = models . CharField ( u ' БИК ' , max_length = 10 )
name = models . CharField ( u ' Наименование банка ' , max_length = 256 )
short_name = models . CharField ( u ' Сокращенное название банка ' , max_length = 100 , blank = True , default = ' ' )
short_name = models . CharField (
' Сокращенное название банка ' ,
max_length = 100 ,
blank = True ,
default = ' '
)
korr_account = models . CharField ( u ' Корр. счет ' , max_length = 20 )
account = models . CharField ( u ' Расчетный счет ' , max_length = 20 )
@ -327,8 +381,10 @@ class BankAccount(models.Model):
super ( BankAccount , self ) . save ( * args , * * kwargs )
if self . is_main :
# если задано, что это будет основной счет, то сбросить у остальных счетов пользователя этот признак
BankAccount . objects . filter ( company = self . company , is_main = True ) . exclude ( pk = self . pk ) . update ( is_main = False )
# если задано, что это будет основной счет, то
# сбросить у остальных счетов пользователя этот признак
BankAccount . objects . filter (
company = self . company , is_main = True ) . exclude ( pk = self . pk ) . update ( is_main = False )
else :
# если нет основного счета, то установить его принудительно
BankAccount . objects . force_main ( company = self . company )
@ -345,8 +401,18 @@ class Client(models.Model):
name = models . CharField ( u ' Наименование ' , max_length = 256 , db_index = True )
name_short_self = models . CharField ( u ' Короткое наименование ' , max_length = 256 , null = True , blank = True , )
name_short_dadata = models . CharField ( u ' Наименование из Dadata ' , max_length = 256 , null = True , blank = True , )
name_short_self = models . CharField (
' Короткое наименование ' ,
max_length = 256 ,
null = True ,
blank = True
)
name_short_dadata = models . CharField (
' Наименование из Dadata ' ,
max_length = 256 ,
null = True ,
blank = True
)
inn = models . CharField ( u ' ИНН ' , max_length = 12 )
kpp = models . CharField ( u ' КПП ' , max_length = 9 , blank = True , default = ' ' ) # Организация
@ -357,7 +423,12 @@ class Client(models.Model):
# банковские реквизиты
bank_bik = models . CharField ( u ' БИК ' , max_length = 10 , blank = True , default = ' ' )
bank_name = models . CharField ( u ' Наименование банка ' , max_length = 256 , blank = True , default = ' ' )
bank_short_name = models . CharField ( u ' Сокращенное наименование банка ' , max_length = 256 , blank = True , default = ' ' )
bank_short_name = models . CharField (
' Сокращенное наименование банка ' ,
max_length = 256 ,
blank = True ,
default = ' '
)
bank_korr_account = models . CharField ( u ' Корр. счет ' , max_length = 20 , blank = True , default = ' ' )
bank_account = models . CharField ( u ' Расчетный счет ' , max_length = 20 , blank = True , default = ' ' )
@ -409,7 +480,9 @@ class Client(models.Model):
class UserProfileFilters ( models . Model ) :
""" Фильтрация реквизитов: какие данные показывать/скрывать при генерации карточки компании. """
"""
Фильтрация реквизитов : какие данные показывать / скрывать при генерации карточки компании .
"""
company = models . OneToOneField ( UserProfile , related_name = ' profile_filters ' , primary_key = True )
# общие фильтры
@ -422,8 +495,14 @@ class UserProfileFilters(models.Model):
show_glavbuh = models . BooleanField ( u ' Главный бухгалтер ' , default = True )
show_bank_account = models . BooleanField ( u ' Банковские реквизиты ' , default = True )
bank_account = models . ForeignKey ( BankAccount , related_name = ' + ' , verbose_name = u ' Расчетный счет ' , blank = True ,
null = True , default = None )
bank_account = models . ForeignKey (
BankAccount ,
related_name = ' + ' ,
verbose_name = u ' Расчетный счет ' ,
blank = True ,
null = True ,
default = None
)
show_contact_info = models . BooleanField ( u ' Контактная информация ' , default = True )
show_address = models . BooleanField ( u ' Фактический адрес ' , default = True )
@ -468,7 +547,11 @@ class UserProfileFilters(models.Model):
class License ( models . Model ) :
company = models . ForeignKey ( UserProfile , related_name = ' licenses ' , verbose_name = u ' пользователь ' )
company = models . ForeignKey (
UserProfile ,
related_name = ' licenses ' ,
verbose_name = ' пользователь '
)
term = models . IntegerField ( verbose_name = u ' срок лицензии ' )
date_from = models . DateField ( u ' дата начала ' , null = True , blank = True )
date_to = models . DateField ( u ' дата окончания ' , null = True , blank = True )
@ -504,8 +587,10 @@ class License(models.Model):
)
def save ( self , * args , * * kwargs ) :
if not self . __prev_date and self . paid_date :
max_date_license = License . objects . filter ( company = self . company ) . aggregate ( Max ( ' date_to ' ) ) [ ' date_to__max ' ]
max_date_license = License . objects . \
filter ( company = self . company ) . aggregate ( Max ( ' date_to ' ) ) [ ' date_to__max ' ]
today = datetime . now ( ) . date ( )
if max_date_license < today :
max_date_license = today - timedelta ( 1 )
@ -525,13 +610,17 @@ class License(models.Model):
if self . status == 0 :
if self . payform == 0 :
return u ' <a href= " %s " >Скачать счёт</a> ' % reverse ( ' customer_license_get_doc ' ,
kwargs = { ' order_num ' : self . id } )
return u ' <a href= " %s " >Скачать счёт</a> ' % reverse (
' customer_license_get_doc ' ,
kwargs = { ' order_num ' : self . id }
)
elif self . payform == 1 :
return u ' Оплатить счёт '
elif self . payform == 2 :
return u ' <a href= " %s " >Скачать квитанцию</a> ' % reverse ( ' customer_license_get_doc ' ,
kwargs = { ' order_num ' : self . id } )
return u ' <a href= " %s " >Скачать квитанцию</a> ' % reverse (
' customer_license_get_doc ' ,
kwargs = { ' order_num ' : self . id }
)
elif self . status in [ 1 , 2 ] :
return u ' История операций '
else :
@ -552,7 +641,8 @@ class License(models.Model):
left = relativedelta ( self . date_to , datetime . today ( ) )
if left . months :
left_str = ' %d %s %d %s ' % ( left . months ,
numeral . choose_plural ( left . months , u " месяц, месяца, месяцев " ) ,
numeral . choose_plural (
left . months , u " месяц, месяца, месяцев " ) ,
left . days ,
numeral . choose_plural ( left . days , u " день, дня, дней " ) ,
)